Skip to content

RecyclerViewGroupTypeProcessor

arjinmc edited this page Jul 23, 2020 · 2 revisions

An abstract class to callback ReyclverViewAdapter.ViewHolder.It's support for group viewType, only for ReyclerViewGroupAdapter.
一个抽象类来回调ReyclverViewAdapter.ViewHolder。只支持分组类型的viewType,只用于ReyclerViewGroupAdapter。

You can get the ViewHolder,position(item position of the adapter) and the Object which position of the data list from the callback "onBindGroupViewHolder"(for group type) and "onBindItemViewHolder"(for item type).
你通过"onBindGroupViewHolder"(分组类型) and "onBindItemViewHolder"(item类型)的回调得到ViewHolder,item的位置和相应位置的数据object。

You need to Override the "getItemViewType()" to distinguish different types. the viewTypes is >=0.
你需要重写"getItemViewType()"来区分不同类型。viewType的值是>=0.

Here is a sample:
这是一个例子:

mGroupAdapter = new RecyclerViewGroupAdapter<>(this, mDataList
                , new int[]{R.layout.item_group_type, R.layout.item_list_type1}
                , new RecyclerViewGroupTypeProcessor<Car>() {

            @Override
            public void onBindGroupViewHolder(RecyclerViewViewHolder holder, int groupPosition, Car car) {
                TextView tvGroup = holder.getView(R.id.tv_group);
                tvGroup.setText(car.getGroup());
            }

            @Override
            public void onBindItemViewHolder(RecyclerViewViewHolder holder, final int groupPosition, final int itemPosition, Car car) {
                TextView tvContent = holder.getView(R.id.tv_content);
                tvContent.setText("Car brand:" + car.getBrand() + " / type: " + car.getTypeName());

                tvContent.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(GroupListActivity.this
                                , "Group: " + groupPosition + "\titemPosition: " + itemPosition, Toast.LENGTH_SHORT).show();
                    }
                });
            }

            @Override
            public int getItemViewType(int position) {
                if (mDataList.get(position).getGroup() != null)
                    return 0;
                return 1;
            }
        });

Clone this wiki locally