
1、创建一个类,并继承SelectAdapter,实现未实现的方法
public class ImageSelectAdapter extends SelectAdapter<ItemSelectImageBinding, String, SelectHolder<ItemSelectImageBinding>> {
private int mHeight;
public ImageSelectAdapter(int height) {
mHeight = height;
}
@Override
protected SelectHolder<ItemSelectImageBinding> onCreateViewHolder(ItemSelectImageBinding binding, int viewType) {
SelectHolder<ItemSelectImageBinding> viewHolder = super.onCreateViewHolder(binding, viewType);
ViewGroup.LayoutParams layoutParams = binding.cardView.getLayoutParams();
layoutParams.height = mHeight;
binding.cardView.setLayoutParams(layoutParams);
//指定由哪个控件触发选中事件,默认 binding.getRoot()
viewHolder.setTrigger(binding.ivSelect);
return viewHolder;
}
@Override
protected void onSelectChange(int position, boolean isSelect) {
if (isSelect) {
Log.i("选择", "onSelectChange: +++ " + position);
} else {
Log.i("选择", "onSelectChange: --- " + position);
}
}
@Override
protected void onBindViewHolder(SelectHolder<ItemSelectImageBinding> viewHolder, int position, boolean isSelect) {
ItemSelectImageBinding binding = viewHolder.getBinding();
binding.setUrl(getDataList().get(position));
if (isSelect) {
binding.viewSelect.setVisibility(View.VISIBLE);
binding.ivSelect.setImageResource(R.drawable.ic_select);
} else {
binding.viewSelect.setVisibility(View.INVISIBLE);
binding.ivSelect.setImageResource(R.drawable.ic_no_select);
}
}
}
2、实例化对象并设置点击事件
mImageSelectAdapter = new ImageSelectAdapter(itemHeight);
3、为RecyclerView设置Adapter
mRecyclerView.setAdapter(mImageSelectAdapter);
4、刷新或写入数据
注意:必须在mRecyclerView.setAdapter(mFriendAdapter);才能写入数据
mImageSelectAdapter.refresh(mObservableArrayList);
用法敲简单,就这样完事了。
网友评论