# RecyclerViewDemo
**Repository Path**: wbkearly/RecyclerViewDemo
## Basic Information
- **Project Name**: RecyclerViewDemo
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-13
- **Last Updated**: 2021-12-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### RecyclerView 基本使用示例
#### 数据模型
```java
public class Fruit {
/**
* 水果名称
*/
private String fruitName;
/**
* 图片资源id
*/
private int imageId;
public Fruit(String fruitName, int imageId) {
this.fruitName = fruitName;
this.imageId = imageId;
}
public void setFruitName(String fruitName) {
this.fruitName = fruitName;
}
public void setImageId(int imageId) {
this.imageId = imageId;
}
public String getFruitName() {
return fruitName;
}
public int getImageId() {
return imageId;
}
}
```
#### item 布局
```xml
```
#### Adapter 与 ViewHolder
```java
/**
* @author wbkearly
*
* 水果RecyclerView适配器
*/
public class FruitAdapter extends RecyclerView.Adapter {
/**
* 数据集合
*/
private final List mFruits;
public FruitAdapter(List fruits) {
mFruits = fruits;
}
/**
* 创建ViewHolder
* @param parent 父布局
* @param viewType 每个item类型 多类型view会使用到
*/
@NonNull
@Override
public FruitViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_fruit_item, parent, false);
return new FruitViewHolder(view);
}
/**
* 绑定ViewHolder
* @param holder 每个item对应的holder
* @param position 每个item对应的位置
*/
@Override
public void onBindViewHolder(FruitAdapter.FruitViewHolder holder, int position) {
Fruit fruit = mFruits.get(position);
holder.fruitName.setText(fruit.getFruitName());
holder.fruitImage.setImageResource(fruit.getImageId());
}
/**
* item 条数
*/
@Override
public int getItemCount() {
return mFruits.size();
}
/**
* 每个item对应的viewHolder
*/
static class FruitViewHolder extends RecyclerView.ViewHolder {
private final ImageView fruitImage;
private final TextView fruitName;
public FruitViewHolder(View itemView) {
super(itemView);
this.fruitImage = itemView.findViewById(R.id.iv_fruit);
this.fruitName = itemView.findViewById(R.id.tv_fruit);
}
}
}
```
#### 使用方法
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private final List mFruits = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
}
private void initData() {
// add data to mFruits
mFruits.add(new Fruit("苹果", R.drawable.apple));
mFruits.add(new Fruit("梨子", R.drawable.pear));
mFruits.add(new Fruit("梨子2", R.drawable.pear2));
mFruits.add(new Fruit("其他", R.drawable.other));
}
private void initView() {
mRecyclerView = findViewById(R.id.recycler_view);
// 使用RecyclerView 必须设置LayoutManager、Adapter
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
// 垂直方向分割,设置水平分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
mRecyclerView.setAdapter(new FruitAdapter(mFruits));
}
}
```