2016-03-01 131 views
0

当我更改了onBindViewHolder的参数后,它变成了灰色,而不是被调用,为什么?这里是我的适配器:为什么方法onBindViewHolder永远不会被使用?

public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 
     private Context context; 
     private List<String> lists; 
     private OnItemClickListener onItemClickListener; 


    public Myadapter(Context context, List<String> lists) { 
     this.context = context; 
     this.lists = lists; 
    } 

    public interface OnItemClickListener { 
     void onItemClick(View view, int postion); 
     void onItemLongClick(View view, int postion); 
    } 

    public void setOnItemClickListener(OnItemClickListener listener) { 
     this.onItemClickListener = listener; 
    } 

    @Override 
    public void onBindViewHolder(final myViewHolder holder, int position) { 
     holder.textView.setText(lists.get(position)); 

     if (onItemClickListener != null) { 
     holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int postion = holder.getLayoutPosition();//得到当前点击item的位置postion 
       onItemClickListener.onItemClick(holder.itemView, postion); 
      } 
     }); 
     holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { 
      @Override 
      public boolean onLongClick(View v) { 
       int postion = holder.getLayoutPosition(); 
       onItemClickListener.onItemLongClick(holder.itemView, postion); 
       return true; 
      } 
     }); 
    } 

} 

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

@Override 
public myViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View itemView = LayoutInflater.from(context).inflate(R.layout.item,parent,false); 
    myViewHolder viewHolder = new myViewHolder(itemView); 

    return viewHolder; 
} 


    public class myViewHolder extends RecyclerView.ViewHolder{ 
     TextView textView; 

     public myViewHolder(View itemView){ 
      super(itemView); 
      textView =(TextView)itemView.findViewById(R.id.text); 

     } 
    } 
} 

它说Myadapter必须被声明为abstract既然你要使用自己的实现抽象方法onBindViewHolder(VH,INT)在 “适配器”

+0

既然你'extend'ing中,你'Override'必须完全复制参数的东西。改变它们意味着你不再创建抽象类所需的功能。 – Teepeemm

回答

1

ViewHolder对于此适配器,您需要在扩展RecyclerView.Adapter时将其用作类型。

变化:

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

要:

public class Myadapter extends RecyclerView.Adapter<myViewHolder> { 
+0

是啊,谢谢!!!! – thirtvanke

相关问题