BaseAdapter

public class CommonViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener {
    private SparseArray<View> viewSparseArray;
    private onItemOnClickListener onItemClickListener;
    private onItemOnLongClickListener onItemOnLongClickListener;
    private Context context;
    private ImageOnClickListener clickListener;

    public CommonViewHolder(View itemView, Context context) {
        super(itemView);
        itemView.setOnClickListener(this);
        itemView.setOnLongClickListener(this);
        this.context = context;
        viewSparseArray = new SparseArray<>();
    }

    /**
     * 根据 ID 来获取 View
     *
     * @param viewId viewID
     * @param <T>    泛型
     * @return 将结果强转为 View 或 View 的子类型
     */
    public <T extends View> T getView(int viewId) {
        // 先从缓存中找,找打的话则直接返回
        // 如果找不到则 findViewById ,再把结果存入缓存中
        View view = viewSparseArray.get(viewId);
        if (view == null) {
            view = itemView.findViewById(viewId);
            viewSparseArray.put(viewId, view);
        }
        return (T) view;
    }

    public CommonViewHolder setText(int viewId, CharSequence text) {
        TextView tv = getView(viewId);
        tv.setText(text);
        return this;
    }

    public CommonViewHolder setViewVisibility(int viewId, int visibility) {
        getView(viewId).setVisibility(visibility);
        return this;
    }

    public CommonViewHolder setImageResource(int viewId, int resourceId) {

        ImageView imageView = getView(viewId);
        Glide.with(context).load(resourceId).into(imageView);
        return this;
    }

    public CommonViewHolder setImageResourceURL(int viewId, String resourceId) {

        ImageView imageView = getView(viewId);
        Glide.with(context).load(resourceId).into(imageView);
        return this;
    }
    public CommonViewHolder setImageResourceURLCrop(int viewId, String resourceId) {

        ImageView imageView = getView(viewId);
        Picasso.with(context).load(resourceId).transform(new CircleTransform(10)).into(imageView);
        return this;
    }

    public CommonViewHolder setTextColor(int viewId, int color) {

        TextView imageView = getView(viewId);
   imageView.setTextColor(0xffFF0000);
        return this;
    }
    public CommonViewHolder setImageResourceURLandClick(int viewId, String resourceId, View.OnClickListener listener) {

        final ImageView imageView = getView(viewId);
        Glide.with(context).load(resourceId).into(imageView);
        imageView.setOnClickListener(listener);
        return this;
    }
    public CommonViewHolder setTagGroup(int viewId, List <String> resourceId) {

        final TagCloudView tagCloudView = getView(viewId);
        List<String> tags = new ArrayList<>();
        for (int i = 0; i < resourceId.size(); i++) {
            tags.add(resourceId.get(i));
        }
        tagCloudView.setTags(tags);
        return this;
    }
    public CommonViewHolder setImageClickListner(int viewId, View.OnClickListener listener) {

        final ImageView imageView = getView(viewId);
        imageView.setOnClickListener(listener);
        return this;
    }
    public CommonViewHolder setTextViewListener(int viewId, View.OnClickListener listener) {

        final TextView textView = getView(viewId);
        textView.setOnClickListener(listener);
        return this;
    }

    public CommonViewHolder setImageResourceUrl(int viewId, String url) {

        ImageView imageView = getView(viewId);
        Glide.with(context).load(url).into(imageView);
        return this;
    }

    public void setImageOnClickListener(int viewId) {
        ImageView imageView = getView(viewId);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (clickListener != null) {
                    clickListener.onImageClickListner(getAdapterPosition());
                }
            }
        });
    }

    public interface ImageOnClickListener {
        void onImageClickListner(int postion);
    }

    public void setImageOnClick(ImageOnClickListener listener) {
        this.clickListener = listener;
    }

    public interface onItemOnClickListener {
        void onItemClickListener(int position);
    }
    public interface onItemOnLongClickListener {
        void onItemLongClickListener(int position);
    }

    public void setOnClickListener(onItemOnClickListener commonClickListener) {
        this.onItemClickListener = commonClickListener;
    }
    public void setOnLongnClickListener(onItemOnLongClickListener commonClickListener) {
        this.onItemOnLongClickListener = commonClickListener;
    }
    @Override
    public void onClick(View v) {
        if (onItemClickListener != null) {
            onItemClickListener.onItemClickListener(getAdapterPosition());
        }
    }

    @Override
    public boolean onLongClick(View v) {
        if (onItemOnLongClickListener != null) {
            onItemOnLongClickListener.onItemLongClickListener(getAdapterPosition());
        }
        return false;
    }
}
public abstract class CommonRecycleAdapter<T> extends RecyclerView.Adapter<CommonViewHolder> {
    private boolean animationsLocked = false;
    private boolean delayEnterAnimation = true;
    private int itemCount = 0;
    private int lastAnimatedPosition = -1;
    protected LayoutInflater layoutInflater;

    protected List<T> dataList;

    protected int layoutId;
    private Context context;

    public CommonRecycleAdapter(Context context, List<T> dataList, int layoutId) {
        this.layoutInflater = LayoutInflater.from(context);
        this.dataList = dataList;
        this.layoutId = layoutId;
        this.context = context;
    }

    @Override
    public int getItemViewType(int position) {
        return super.getItemViewType(position);
    }

    @Override
    public CommonViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = layoutInflater.inflate(layoutId, parent, false);
        return new CommonViewHolder(itemView, context);
    }

    @Override
    public void onBindViewHolder(CommonViewHolder holder, int position) {
        bindData(holder, dataList.get(position), position);
    }


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

    public abstract void bindData(CommonViewHolder holder, T data, int postion);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值