Android中RecyclerView Adapter的骚操作
16lz
2022-01-16
SimpleRecycler
Github传送门:SimpleRecycle on Github
step:
- 在工程目录的
com.eric.simple.component
下找到SimpleRecyclerAdapter & SimpleViewHolder; - 把这两个文件放到自己的工程中(放到哪个位置自定义);
- RecyclerView的adapter继承
SimpleRecyclerAdapter
并在泛型处传入数据类; - 仅在bindData中使用helper来操作每一个item;
ps. 这里的helper是一个链式调用。helper即是SimpleViewHolder。当前这个demo中只封装了一些常用的方法。
比如:设置可见性、设置文字、设置文字颜色、设置图片、点击、长按、通过id获取view等。若需要别的方法,可自行添加。
Adapter写法
public class TestAdapter extends SimpleRecyclerAdapter<String> { public TestAdapter(List<String> list) { super(R.layout.item_test, list); } @Override protected void bindData(SimpleViewHolder helper, String item) { helper.setText(R.id.tv_test_item, item) .addClickListener(R.id.tv_test_item) // 设置子项的点击事件监听 .addLongClickListener(R.id.tv_test_item) // 设置子项的长按事件监听 .getView(R.id.tv_test_item); }}
Activity中的recyclerView
public class MainActivity extends AppCompatActivity { private RecyclerView rvMain; private TestAdapter testAdapter; private ArrayList<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rvMain = findViewById(R.id.rvMain); initRecycler(); initEvent(); loadData(); } private void initRecycler() { list = new ArrayList<>(); rvMain.setLayoutManager(new LinearLayoutManager(this)); testAdapter = new TestAdapter(list); // 绑定RecyclerView testAdapter.bindRecyclerView(rvMain); } private void initEvent() { // item 设置点击监听 testAdapter.setOnItemClickListener(new SimpleRecyclerAdapter.OnItemClickListener() { @Override public void onClick(View v, int position) { // item 点击监听回调 Toast.makeText(MainActivity.this, "item"+position, Toast.LENGTH_SHORT).show(); } }); // 子项设置点击监听 testAdapter.setOnSubViewClickListener(new SimpleRecyclerAdapter.OnSubViewClickListener() { @Override public void onClick(View v, int position) { // 子项点击监听回调 Toast.makeText(MainActivity.this, "sub item"+position, Toast.LENGTH_SHORT).show(); } }); } private void loadData() { for (int i = 0; i < 20; i++) { list.add("文字是sub item "+i); } testAdapter.notifyDataSetChanged(); }}
最后
方法不止一种,这样地操作方式,这只是我的一种思考。
更多相关文章
- LinearLayout布局之weight
- Android(安卓)Studio 解决方法No JVM installation found. Pleas
- [Android] ImageView.ScaleType设置图解
- 2011.12.05——— android 关于PopUpWindow的setFocusable
- Android(安卓)DownloadManager下载完成事件监听(系列4)
- Android点击监听事件
- Android配置----Eclipse+BlueStacks调试Android应用
- android dialog
- EditText 属性