Android RecyclerView.Adapter基本使用

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private MyAdapter mMyAdapter;
    private LinearLayoutManager mLayoutManager;
    private List<String> list;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();

        mRecyclerView = findViewById(R.id.recycler_view);
        mMyAdapter = new MyAdapter(list);
        mLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setAdapter(mMyAdapter);
    }

    private void initData() {
        list = new ArrayList<>();
        for (int i = 0; i <= 20; i++) {
            list.add("Item " + i);
        }
    }
}

Adapter.java

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    //数据源
    private List<String> mList;

    public MyAdapter(List<String> list) {
        mList = list;
    }

    //返回item个数
    @Override
    public int getItemCount() {
        return mList.size() ;
    }

    //创建ViewHolder
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    return new NormalHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false));
    }

    //填充视图
    @Override
    public void onBindViewHolder(@NonNull final MyAdapter.ViewHolder holder, final int position) {
        holder.mView.setText(mList.get(position));
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mView;

        public ViewHolder(View itemView) {
            super(itemView);
            mView = itemView.findViewById(R.id.text_view);
        }
    }
}

 

Android中,RecyclerView.Adapter是一个核心组件,用于管理RecyclerView中显示的每一项数据。它负责创建、更新和回收视图(ViewHolder),以及提供数据给RecyclerView。以下是基本Adapter实现步骤: 1. **创建抽象类或接口**: 首先,你需要继承RecyclerView.Adapter的抽象类或实现其接口。例如,如果你的项目中需要一个简单列表,可以使用`RecyclerView.Adapter<YourViewHolder>`,其中`YourViewHolder`是你自定义的ViewHolder。 ```java public class YourAdapter extends RecyclerView.Adapter<YourViewHolder> { private List<YourItem> items; // 数据源 // 初始化,设置数据源等 public YourAdapter(List<YourItem> items) { this.items = items; } //...其他方法 } ``` 2. **声明ViewHolder**: 创建一个ViewHolder类,继承自RecyclerView.ViewHolder,通常用于封装View并设置数据。 ```java public static class YourViewHolder extends RecyclerView.ViewHolder { TextView textView; public YourViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.your_text_view_id); } } ``` 3. **适配器方法**: - `getItemCount()` 返回列表中的条目数。 - ` onCreateViewHolder(ViewGroup parent, int viewType)` 在需要时创建新的ViewHolder实例。 - ` onBindViewHolder(YourViewHolder holder, int position)` 将数据绑定到每个ViewHolder上,并准备展示。 - ` onViewRecycled(YourViewHolder holder)` 回收不再使用的ViewHolder以节省内存。 4. **数据操作**: - 更新数据时,你可以通过`notifyDataSetChanged()`通知Adapter数据已更改,这将使得RecyclerView重新布局并更新视图。 ```java items.add(new YourItem()); // 添加新数据 adapter.notifyDataSetChanged(); ``` 5. **错误处理**: 如果数据源改变后不调用`notifyDataSetChanged()`,可能会导致数据不一致,因此在适当的时候记得更新并调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值