程序员

SelectAdapter(图片选择)

2019-12-20  本文已影响0人  小耗子_20da

RecyclerView与DataBinding封装

以图片选择器为例

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);

用法敲简单,就这样完事了。

上一篇 下一篇

猜你喜欢

热点阅读