TopicDetailMemberAdapter.java 4.49 KB
Newer Older
konghaorui committed
1 2 3
package com.yidianling.dynamic.adapter;

import android.content.Context;
YKai committed
4
import androidx.recyclerview.widget.RecyclerView;
konghaorui committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.ydl.ydl_image.module.GlideApp;
import com.yidianling.common.tools.LogUtil;
import com.yidianling.dynamic.R;
import com.yidianling.dynamic.model.TopicDetailBean;

import java.util.ArrayList;
import java.util.List;

/**
 * 话题详情发帖用户头像
 * Created by xiongyu on 2017/3/14.
 */

public class TopicDetailMemberAdapter extends RecyclerView.Adapter<TopicDetailMemberViewHolder> {
    private static final String TAG = "TopicDetailMemberAdapter";

    protected Context mContext;
    protected List<TopicDetailBean.Member> mDatas;
    protected LayoutInflater mInflater;

    public interface OnItemClickLister {
        void onItemClick(View view, int position);
    }

    public List<TopicDetailBean.Member> getDatas() {
        return mDatas;
    }

    public void addData(int index,TopicDetailBean.Member data) {
        if (data == null) {
            return;
        }
        if (mDatas == null) {
            mDatas = new ArrayList<TopicDetailBean.Member>();
        }
        mDatas.add(index,data);
        notifyItemRangeChanged(index, mDatas.size()-1);
    }

    public void removeData(TopicDetailBean.Member data) {
        if (mDatas==null||mDatas.size()==0){
            return;
        }
        mDatas.remove(data);
        notifyDataSetChanged();
    }

    public void removeData(int index) {
        LogUtil.d("index: " + index + " data size: " + mDatas.size());
        if (mDatas == null) return;
        mDatas.remove(index);
        notifyItemRemoved(index);
        notifyItemRangeChanged(index, mDatas.size()); //解决notifyItemRemoved后数据错乱
    }

    public void addDatas(List<TopicDetailBean.Member> datas) {
        mDatas.addAll(datas);
        notifyItemRangeChanged(mDatas.size() - datas.size(), datas.size());
    }

    public void setDatas(List<TopicDetailBean.Member> datas) {
        if (datas != null) {
            mDatas = datas;
            notifyDataSetChanged();
        }
    }

    private OnItemClickLister mOnItemClickLister;

    public void setOnItemClickLister(OnItemClickLister lister) {
        this.mOnItemClickLister = lister;
    }

    public TopicDetailMemberAdapter(List<TopicDetailBean.Member> mDatas, Context mContext) {
        this.mContext = mContext;
        this.mDatas = mDatas;
        mInflater = LayoutInflater.from(mContext);
    }

    public TopicDetailMemberAdapter(Context mContext) {
        this(new ArrayList<>(), mContext);
    }

    @Override
    public TopicDetailMemberViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = null;
konghaorui committed
96
        view = mInflater.inflate(R.layout.dynamic_item_topicdetail_member_head, parent, false);
konghaorui committed
97 98 99 100 101 102 103 104 105 106
        TopicDetailMemberViewHolder viewHolder = new TopicDetailMemberViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(TopicDetailMemberViewHolder holder, final int position) {
        TopicDetailBean.Member topicDetailMemberHead = mDatas.get(position);
        String img_url = topicDetailMemberHead.head;
        GlideApp.with(mContext)
                .load(img_url)
konghaorui committed
107
                .error(R.drawable.dynamic_head_place_hold_pic)
konghaorui committed
108
                .circleCrop()
konghaorui committed
109 110
                .placeholder(R.drawable.dynamic_head_place_hold_pic)
                .error(R.drawable.dynamic_head_place_hold_pic)
konghaorui committed
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
                .into(holder.item_topic_member_head_iv);
        setUpItemEvent(holder);
    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }


    /**
     * 给item添加监听
     *
     * @param holder
     */
    protected void setUpItemEvent(final TopicDetailMemberViewHolder holder) {
        if (mOnItemClickLister != null) {
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int layoutPosition = holder.getLayoutPosition();
                    mOnItemClickLister.onItemClick(holder.itemView, layoutPosition);

                }
            });
        }
    }
}

class TopicDetailMemberViewHolder extends RecyclerView.ViewHolder {
    ImageView item_topic_member_head_iv;

    public TopicDetailMemberViewHolder(View itemView) {
        super(itemView);
        item_topic_member_head_iv = (ImageView) itemView.findViewById(R.id.item_topic_member_head_iv);
    }
}