-
Notifications
You must be signed in to change notification settings - Fork 1
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;
}
});