SimpleRecycler
Github傳送門:SimpleRecycle on Github
step:
- 在工程目錄的
下找到SimpleRecyclerAdapter & SimpleViewHolder;com.eric.simple.component
- 把這兩個檔案放到自己的工程中(放到哪個位置自定義);
- 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();
}
}
最後
方法不止一種,這樣地操作方式,這隻是我的一種思考。