繼續接着昨天的來,昨天終於弄好了一個例子,但是那個沒有點擊事件, 需要自己添加,參照別人的例子,弄了個比較簡單的,主要是改動myRecycleradatper.java中的部分.
增加如下的接口:
//增加一個靜態的接口.
private OnItemClickListener listener;
public static interface OnItemClickListener {
void onItemClick(View view , int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
在onBindViewHolder中增加如下的代碼
if (listener != null) {
holder.v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClick(v,position);
}
});
}
這就好了,是目前能找到的比較簡潔的方法了.
在主界面中直接使用就可以了.如下:
recycleAdapter.setOnItemClickListener(new myRecycleradatper.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Log.e("constr"," " + position);
}
});
觀看點擊后log.e的記錄值.
自定義的數據適配器全部代碼如下,供參照,雖然不好,但是能用,我也不知啥意思,以后慢慢理解吧:
public class myRecycleradatper extends RecyclerView.Adapter<myRecycleradatper.MyViewHolder> {
private List<filelist> mDatas;
private Context mContext;
private LayoutInflater inflater;
//增加一個靜態的接口.
private OnItemClickListener listener;
public static interface OnItemClickListener {
void onItemClick(View view , int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
public myRecycleradatper(Context context, List<filelist> datas){
this. mContext=context;
this. mDatas=datas;
inflater=LayoutInflater. from(mContext);
}
@Override
public int getItemCount() {
return mDatas.size();
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_view,parent, false);
MyViewHolder holder= new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
filelist da=mDatas.get(position);
if(position%2==0){
//holder.tv.setBackgroundColor(Color.BLUE);
holder.v.setBackgroundColor(Color.GRAY);
}
if (listener != null) {
holder.v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClick(v,position);
}
});
}
holder.tv.setText(da.getName());
holder.msg.setText(da.getZt());
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView tv;
TextView msg;
View v;
public MyViewHolder(View view) {
super(view);
tv=(TextView) view.findViewById(R.id.txt_xs);
msg=(TextView)view.findViewById(R.id.txt_msg);
v=view;
}
}
}
