RoomGiftPeopleAdapter.java 6.2 KB
package com.chudiangameplay.android.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.chudiangameplay.android.R;
import com.chudiangameplay.android.bean.Room_MaiWeiInfo;
import com.chudiangameplay.android.interface_.CommCallBack;
import com.chudiangameplay.android.responce.GetDongTai_DaShangListResponce.DaShangInfo;
import com.chudiangameplay.android.ui.view.RoundImageView;
import com.chudiangameplay.android.util.GlideUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import static android.view.View.VISIBLE;

/**
 * Created by Administrator on 2018/8/22.
 */

public class RoomGiftPeopleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    Context mContext;
    List<Room_MaiWeiInfo> list = new ArrayList<>();
    CommCallBack callBack;
    Map<Room_MaiWeiInfo, Boolean> selectedData = new HashMap<>();
    int selectCount;
    TextView tvSelectAll;

    public RoomGiftPeopleAdapter(Context mContext, CommCallBack callBack) {
        this.mContext = mContext;
        this.callBack = callBack;
    }

    public void setData(List<Room_MaiWeiInfo> list, Room_MaiWeiInfo user, TextView tvSelectAll) {
        this.tvSelectAll = tvSelectAll;
        this.list.clear();
        this.list.addAll(list);
        selectedData.clear();
        selectCount = 0;
        if(list != null && list.size() > 0) {
            for (Room_MaiWeiInfo info : list) {
                if(user != null && user.micUser!= null && TextUtils.equals(info.micUser.userId, user.micUser.userId)){
                    selectedData.put(info, true);
                    selectCount++;
                }else {
                    selectedData.put(info, false);
                }
            }
        }
        setTvSelectAll();
        notifyDataSetChanged();
    }

    public void selectAll(){
        if(list != null && list.size() > 0) {
            for (Room_MaiWeiInfo info : list) {
                selectedData.put(info, true);
            }
            selectCount = list.size();
            setTvSelectAll();
            notifyDataSetChanged();
        }
    }

    public void unselectAll(){
        if(list != null && list.size() > 0) {
            for (Room_MaiWeiInfo info : list) {
                selectedData.put(info, false);
            }
            selectCount = 0;
            setTvSelectAll();
            notifyDataSetChanged();
        }
    }

    public boolean hasSelectAll(){
        return selectCount == 0 ? false : selectCount == getItemCount();
    }

    private void setTvSelectAll(){
        if(selectCount > 0 && selectCount == getItemCount()){
            tvSelectAll.setTextColor(mContext.getResources().getColor(R.color.white));
            tvSelectAll.setBackgroundResource(R.drawable.shape_circle_maincolor);
        }else{
            tvSelectAll.setTextColor(mContext.getResources().getColor(R.color.text_333333));
            tvSelectAll.setBackgroundResource(R.drawable.shape_circle_ffffff);
        }
    }

    public List<Room_MaiWeiInfo> getSelectList(){
        List<Room_MaiWeiInfo> result = new ArrayList();
        if(selectCount == 0){
            return result;
        }
        Iterator<Map.Entry<Room_MaiWeiInfo, Boolean>> entries = selectedData.entrySet().iterator();
        while(entries.hasNext()){
            Map.Entry<Room_MaiWeiInfo, Boolean> entry = entries.next();
            if(entry.getValue()){
                result.add(entry.getKey());
            }
        }
        return result;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater mInflater = LayoutInflater.from(mContext);
        ViewGroup viewGroup = (ViewGroup) mInflater.inflate(R.layout.item_room_gift_people_item, null, false);
        ContentViewHolder holder = new ContentViewHolder(viewGroup);
        return holder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        ContentViewHolder contentViewHolder = (ContentViewHolder) holder;
        final Room_MaiWeiInfo info = list.get(position);
        if(info.index == 0){
            contentViewHolder.tv_num.setText("主");
        }else {
            contentViewHolder.tv_num.setText(info.index + "");
        }
        GlideUtil.displayImage(mContext, info.micUser.headPortraitsUrl, contentViewHolder.iv_head, R.drawable.ico_im_default_head);
        if(selectedData.get(info)){
            contentViewHolder.iv_select.setVisibility(VISIBLE);
            contentViewHolder.tv_num.setTextColor(mContext.getResources().getColor(R.color.white));
            contentViewHolder.tv_num.setBackgroundResource(R.drawable.shape_circle_maincolor);
        }else{
            contentViewHolder.iv_select.setVisibility(View.GONE);
            contentViewHolder.tv_num.setTextColor(mContext.getResources().getColor(R.color.text_333333));
            contentViewHolder.tv_num.setBackgroundResource(R.drawable.shape_circle_dddddd);
        }
        contentViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean isSelect = selectedData.get(info);
                selectedData.put(info, !isSelect);
                if(isSelect){
                    selectCount --;
                }else{
                    selectCount ++;
                }
                setTvSelectAll();
                notifyItemChanged(position);
            }
        });
    }

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

    class ContentViewHolder extends RecyclerView.ViewHolder {
        RoundImageView iv_head;
        TextView tv_num;
        ImageView iv_select;

        public ContentViewHolder(View itemView) {
            super(itemView);
            iv_head =  itemView.findViewById(R.id.iv_head);
            tv_num =  itemView.findViewById(R.id.tv_num);
            iv_select = itemView.findViewById(R.id.iv_select);
        }
    }
}