1 RecyclerView
1 RecyclerView
RecyclerView
调用
1
2
3
4
5RecyclerView recyclerView = findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
FruitAdapter adapter = new FruitAdapter(fruitList);
recyclerView.setAdapter(adapter);- 控件
- id: recycler_view
1
2
3
4<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" /> - id: fruit_name, fruit_image
- id: recycler_view
- 控件
适配器 Adapter
定义式
1
public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {}
创建内部类 ViewHolder
1
2
3
4
5
6
7
8
9
10static class ViewHolder extends RecyclerView.ViewHolder{
ImageView fruitImage;
TextView fruitName;
public ViewHolder( View view) {
super(view);
fruitName = (TextView)view.findViewById(R.id.fruit_name);
fruitImage = (ImageView)view.findViewById(R.id.fruit_image);
}
}构造方法 FruitAdapter(接收数据源)
1
2
3public FruitAdapter(List<Fruit> fruitList){
mFruitList = fruitList;
}mFruitList:
1
private List<Fruit> mFruitList;
必须继承的方法
onCreateViewHolder()onBindViewHolder()getItemCount()- onCreateViewHolder() 创建ViewHolder实例
1
2
3
4
5
6
7
8public ViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
//加载fruit_item布局
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item, parent, false);
//将布局传入ViewHolder
ViewHolder holder = new ViewHolder(view);
//返回ViewHolder实例
return holder;
} - onBindViewHolder()
1
2
3
4
5
6
7public void onBindViewHolder( ViewHolder holder, int position) {
//通过当前项获得Fruit实例
Fruit fruit = mFruitList.get(position);
//将数据设置到ViewHolder的ImageView和TextView中
holder.fruitImage.setImageResource(fruit.getImageId());
holder.fruitName.setText(fruit.getName());
}用于对RecyclerView子项的数赋值,每个子项滚动到屏幕的时候执行
- getItemCount()
1
2
3
4public int getItemCount() {
//返回数据源长度
return mFruitList.size();
}
- onCreateViewHolder() 创建ViewHolder实例