adapter 绑定的数据列表变化时,如何更新视图 示例代码
时间: 2024-03-03 11:52:39 浏览: 145
Android RecyclerView 数据绑定实例代码
以下是一个示例代码:
```
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> mData;
public MyAdapter(List<String> data) {
mData = data;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String item = mData.get(position);
holder.textView.setText(item);
}
@Override
public int getItemCount() {
return mData.size();
}
public void setData(List<String> data) {
mData = data;
notifyDataSetChanged();
}
public void addItem(String item) {
mData.add(item);
notifyItemInserted(mData.size() - 1);
}
public void removeItem(int position) {
mData.remove(position);
notifyItemRemoved(position);
}
public void moveItem(int fromPosition, int toPosition) {
String item = mData.remove(fromPosition);
mData.add(toPosition, item);
notifyItemMoved(fromPosition, toPosition);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
}
}
}
```
在这个示例代码中,当 `setData()` 方法被调用时,会更新整个数据列表并调用 `notifyDataSetChanged()` 方法来刷新视图;当 `addItem()` 方法被调用时,会插入一个新的 item 并调用 `notifyItemInserted()` 方法来刷新视图;当 `removeItem()` 方法被调用时,会删除指定位置的 item 并调用 `notifyItemRemoved()` 方法来刷新视图;当 `moveItem()` 方法被调用时,会移动指定位置的 item 并调用 `notifyItemMoved()` 方法来刷新视图。
阅读全文