SimpleRecycler
Github传送门:SimpleRecycle on Github
step:
- 在工程目录的
com.eric.simple.component
下找到SimpleRecyclerAdapter & SimpleViewHolder; - 把这两个文件放到自己的工程中(放到哪个位置自定义);
- RecyclerView的adapter继承
SimpleRecyclerAdapter<T>
并在泛型处传入数据类; - 仅在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();
}
}
最后
方法不止一种,这样地操作方式,这只是我的一种思考。