1.在build.gradle(Module:app)中添加依赖

implementation 'com.android.support:recyclerview-v7:26.1.0'

注:版本号应该与implementation 'com.android.support:appcompat-v7:26.1.0'中的版本号相同

2.新建RecyclerViewActivity和布局文件activity_recycler_view.xml

activity_recycler_view.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.wzlab.widgetbox.RecyclerViewActivity">    <android.support.v7.widget.RecyclerView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/rv_list"        android:background="@color/gray"/>LinearLayout>

RecyclerViewActivity.java

public class RecyclerViewActivity extends AppCompatActivity {    private RecyclerView mRvList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_recycler_view);        mRvList = findViewById(R.id.rv_list);        mRvList.setLayoutManager(new LinearLayoutManager(RecyclerViewActivity.this));        mRvList.setAdapter(new LinearAdapter(RecyclerViewActivity.this));    }}

3.为了填充数据,需要新建一个Adapter,这里起名为LinearAdapter

这里的LinearAdapter需要继承RecyclerView.Adapter,并且实现三个未完成的方法
//这里的LinearViewHolder需要自己写public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.LinearViewHolder>{    private Context mContext;    public LinearAdapter(Context context){        this.mContext = context;    }    //这个方法用来讲Item注入    @Override    public LinearAdapter.LinearViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        return new LinearViewHolder(LayoutInflater.from(mContext).inflate(R.layout.layout_linear_item,parent,false));    }    //这个方法填充数据    @Override    public void onBindViewHolder(LinearAdapter.LinearViewHolder holder, int position) {        holder.mTvAuthor.setText(String.valueOf(position));        holder.mTvMusicName.setText("music");        holder.mTvDuration.setText("30");    }    //这个方法指定了显示item的数目    @Override    public int getItemCount() {        return 30;    }    // 新建的内部类来定义item里的组件    class LinearViewHolder extends RecyclerView.ViewHolder{        private TextView mTvAuthor;        private TextView mTvMusicName;        private TextView mTvDuration;        public LinearViewHolder(View itemView) {            super(itemView);            mTvAuthor = itemView.findViewById(R.id.tv_author);            mTvMusicName = itemView.findViewById(R.id.tv_music_name);            mTvDuration = itemView.findViewById(R.id.tv_duration);        }    }}

4.给每一个Item设定一个布局,新建layout_linear_item.xml,这个布局可以按照自己的需求去设计

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical">    <TextView        android:id="@+id/tv_author"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/tv_music_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/tv_duration"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />LinearLayout>

更多相关文章

  1. [置顶] Android(安卓)IPC 通讯机制源码分析【下】
  2. android,自定义dialog
  3. android 监听应用前后台运行状态
  4. android OnPageChangeListener
  5. android4.4.2 bluetooth解析(二)
  6. android中SQLite的使用总结,用excSQL和rawQuery方法实现一般得增
  7. Android(安卓)Editable
  8. View去锯齿,在有些机器需要在图层的软件层才能实现
  9. RxJava2+retrofit简单使用,基于POST请求封装工具类

随机推荐

  1. Android View框架的draw机制
  2. Android(安卓)Q适配(3)-------唯一标识符篇
  3. Flutter学习笔记
  4. Android(安卓)百度地图 计算两点之间的距
  5. Android读取文件方法总结
  6. Android使用PULL解析和生成XML文件
  7. om.android.builder.model.SourceProvide
  8. Android 依赖注入函数库Roboguice(一)
  9. Android(安卓)去掉标题栏,状态栏,导航栏
  10. android TextView 结合SpannableString对