BaseRecyclerView的使用

1、创建BaseViewHolder

public class BaseViewHolder extends RecyclerView.ViewHolder {

    public BaseViewHolder(@NonNull View itemView) {
        super(itemView);
    }

    public <T extends View> T getChildView(int id){
        return (T) itemView.findViewById(id);
    }

    public TextView setText(int viewId,String text){
        TextView textView = getChildView(viewId);
        textView.setText(text);
        return textView;
    }

    public boolean isChecked(int viewId){
        CheckBox checkBox = getChildView(viewId);
        boolean checked = checkBox.isChecked();
        return checked;
    }

    public ImageView setPicture(int viewId,String url){
        ImageView imageView = getChildView(viewId);
        Glide.with(itemView.getContext()).load(url).into(imageView);
        return imageView;
    }

    public ImageView setCirclePicture(int viewId,String url){
        ImageView imageView = getChildView(viewId);
        Glide.with(itemView.getContext()).load(url).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(imageView);
        return imageView;
    }

    public ImageView setCircularBeadPicture(int viewId,String url,int angle){
        ImageView imageView = getChildView(viewId);
        Glide.with(itemView.getContext()).load(url).apply(RequestOptions.bitmapTransform(new RoundedCorners(angle))).into(imageView);
        return imageView;
    }

    public View setVisibility(int viewId,int i){
        View view = getChildView(viewId);
        view.setVisibility(i);
        return view;
    }
}

2、创建BaseRecyclerAdapter

public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> {
    private static final String TAG = BaseRecyclerAdapter.class.getSimpleName();
    protected Context mContext;
    protected List<T> mData;
    protected LayoutInflater mInflater;
    protected int lauoutRes;


    public BaseRecyclerAdapter(Context mContext, List<T> mData, int lauoutRes) {
        this.mContext = mContext;
        this.mData = mData;
        this.lauoutRes = lauoutRes;
        this.mInflater = LayoutInflater.from(mContext);
    }

    public void refrensh(List<T> data) {
        try {
            this.mData.clear();
            this.mData.addAll(data);
            notifyDataSetChanged();
        } catch (Exception e) {
            e.printStackTrace();
            Log.e(TAG, "refrensh: " + e.getMessage());
        }
    }

    @NonNull
    @Override
    public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new BaseViewHolder(mInflater.inflate(lauoutRes, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
        onBindData(holder, mData.get(position), position);
    }

    protected abstract void onBindData(BaseViewHolder holder, T data, int position);

    @Override
    public int getItemCount() {
        return mData == null ? 0 : mData.size();
    }
}

3、创建适配器

public class ExerciseAdapter extends BaseRecyclerAdapter<String> {

    private List<String> list;

    public ExerciseAdapter(Context mContext, List<String> mData, int lauoutRes) {
        super(mContext, mData, lauoutRes);
        this.list = mData;
    }

    @Override
    protected void onBindData(BaseViewHolder holder, String data, int position) {

    }
}

4、使用

List<String> list = new List;
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this) {
   @Override
   public boolean canScrollVertically() {
   	   //禁止列表滑动
       return false;
   }
};
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
rv.setLayoutManager(linearLayoutManager);
ExerciseAdapter exerciseAdapter = new ExerciseAdapter(this, list, R.layout.item) {
   @Override
   protected void onBindData(BaseViewHolder holder, String, int position) {
       super.onBindData(holder, data, position);
       holder.setCircularBeadPicture(R.id.item_iv, data, 30);
       holder.setText(R.id.item_tv, data);
       holder.itemView.setOnClickListener(new NoMoreClickListener() {
           @Override
           protected void OnMoreClick(View view) {
               Toast.makeText(this, "" + data, Toast.LENGTH_SHORT).show();
           }
       });
   }
};
rv.setAdapter(exerciseAdapter);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值