AndroidがRecyclerViewを使う方法

8208 ワード

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

<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.データを埋め込むには、LinearAdapterという名前の新しいAdapterを作成する必要があります.
ここのLinearAdapterはRecyclerViewを継承する必要があります.Adapter、そして3つの未完成の方法を実現します
//   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、このレイアウトは自分のニーズに合わせて設計することができます

<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>