2016-03-01 118 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

相關問題