AndroidがRecyclerViewを使う方法
8208 ワード
1.build.gradle(Module:app)に依存を追加
2.新規RecyclerViewActivityとレイアウトファイルactivity_recycler_view.xml
activity_recycler_view.xml
ここのLinearAdapterはRecyclerViewを継承する必要があります.Adapter、そして3つの未完成の方法を実現します
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.javapublic 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>