天天看點

Android中RecyclerView Adapter的騷操作SimpleRecycler

SimpleRecycler

Github傳送門:SimpleRecycle on Github

step:

  1. 在工程目錄的

    com.eric.simple.component

    下找到SimpleRecyclerAdapter & SimpleViewHolder;
  2. 把這兩個檔案放到自己的工程中(放到哪個位置自定義);
  3. RecyclerView的adapter繼承

    SimpleRecyclerAdapter<T>

    并在泛型處傳入資料類;
  4. 僅在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();
    }
}
           

最後

方法不止一種,這樣地操作方式,這隻是我的一種思考。