RecyclerView文字水平滑动可点击且item点击变色Demo

来源:互联网 发布:数据库工程师 历年真题 编辑:程序博客网 时间:2024/06/06 09:16
import java.util.ArrayList;
import java.util.List;


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


public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder>  implements View.OnClickListener{  

private List<Boolean> isClicks;//控件是否被点击,默认为false,如果被点击,改变值,控件根据值改变自身颜色
private LayoutInflater mInflater;  
private List<Children> mDatas;
private OnRecyclerViewItemClickListener mOnItemClickListener = null;

public static interface OnRecyclerViewItemClickListener {
       void onItemClick(View view , Children data);
   }

public GalleryAdapter(Context context, List<Children> datats)  
{  
   mInflater = LayoutInflater.from(context);  
   mDatas = datats; 
   isClicks = new ArrayList<Boolean>();
        for(int i = 0;i<mDatas.size();i++){
        if(i==0){
        isClicks.add(true);
        }
            isClicks.add(false);
        }
}  


public class ViewHolder extends RecyclerView.ViewHolder  { 

   public ViewHolder(View arg0)  
   {  
       super(arg0);  
   }  

   TextView mTxt;
}  
@Override  
public int getItemCount()  
{  
   return mDatas.size();  
}  
/** 
* 创建ViewHolder 
*/  
@Override  
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)  
{  
   View view = mInflater.inflate(R.layout.activity_recycler_item,  
           viewGroup, false);  
   ViewHolder viewHolder = new ViewHolder(view);  
   view.setOnClickListener(this);
   viewHolder.mTxt = (TextView) view  
           .findViewById(R.id.id_index_gallery_item_text);  
   return viewHolder;  
}  
/** 
* 设置值 
*/  
@Override  
public void onBindViewHolder(final ViewHolder viewHolder, final int i)  
{  
if(i<mDatas.size()){
viewHolder.mTxt.setText(mDatas.get(i).getSname()); 

//将数据保存在itemView的Tag中,以便点击时进行获取
       viewHolder.itemView.setTag(mDatas.get(i));
       if(isClicks.get(i)){
           viewHolder.mTxt.setTextColor(Color.parseColor("#00a0e9"));
       }else{
           viewHolder.mTxt.setTextColor(Color.parseColor("#000000"));
       }
       // 如果设置了回调,则设置点击事件
       if (mOnItemClickListener != null) {
          viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   for(int i = 0; i <isClicks.size();i++){
                       isClicks.set(i,false);
                   }
                   isClicks.set(i,true);
                    notifyDataSetChanged();
                   mOnItemClickListener.onItemClick(viewHolder.itemView,mDatas.get(i));
              }
           });
       }
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mOnItemClickListener != null) {
           //注意这里使用getTag方法获取数据
           mOnItemClickListener.onItemClick(v,(Children) v.getTag());
           
       }
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }
}  
0 0
原创粉丝点击