美文网首页
RecyclerView选中

RecyclerView选中

作者: 寒涵 | 来源:发表于2018-09-19 10:48 被阅读22次

RecyclerView选中 (转自 https://www.kancloud.cn/wuxinxi/mianshi/275880) 记录,自用

package com.wxx.fragmentaction.recycler;

import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.wxx.fragmentaction.R;

import java.util.List;

/**
 * 作者:Tangren_ on 2017/2/21 0021.
 * 邮箱:wu_tangren@163.com
 * TODO:用一句话概括
 */


public class RecyclerAdapter extends RecyclerView.Adapter<ItemViewHolder> {

    private List<String> mItems;

    private ItemClick click;

    private SparseBooleanArray mBooleanArray;

    private int mLastCheckedPosition = -1;

    private Context context;

    public RecyclerAdapter(Context context, List<String> mItems) {
        this.mItems = mItems;
        this.context = context;
        mBooleanArray = new SparseBooleanArray(mItems.size());
    }

    public void setItemChecked(int position) {
        mBooleanArray.put(position, true);

        if (mLastCheckedPosition > -1) {
            mBooleanArray.put(mLastCheckedPosition, false);
            notifyItemChanged(mLastCheckedPosition);
        }
        notifyDataSetChanged();
        mLastCheckedPosition = position;
    }

    @Override
    public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        ItemViewHolder holder = new ItemViewHolder(view, click);
        return holder;
    }

    @Override
    public void onBindViewHolder(ItemViewHolder holder, int position) {
        if (!mBooleanArray.get(position)) {
            //没有选中
            holder.line.setVisibility(View.INVISIBLE);
            holder.itemView.setBackgroundResource(R.color.colorGray);
            holder.textView.setTextColor(Color.BLACK);
        } else {
            holder.line.setVisibility(View.VISIBLE);
            holder.itemView.setBackgroundColor(Color.WHITE);
            holder.textView.setTextColor(context.getResources().getColor(R.color.colorPrimary));
        }
        holder.textView.setText(mItems.get(position));
    }

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

    public void setOnClick(ItemClick click) {
        this.click = click;
    }
}

点击事件

private mCurrentPosition=-1;
 @Override
    public void onClick(View view, int postion) {
        if (mCurrentPosition == postion) {
            return;
        }
        mCurrentPosition = postion;
        mAdapter.setItemChecked(postion);
    }

相关文章

网友评论

      本文标题:RecyclerView选中

      本文链接:https://www.haomeiwen.com/subject/jsgbnftx.html