2015-02-24 59 views
2

在我們的適配器中使用android.support.v7.widget.RecyclerView.ViewHolder時,它是否需要視圖標記,就像我們之前做的那樣。 或者庫在後臺自動執行它?android.support.v7.widget.RecyclerView.ViewHolder

+0

'onBindViewHolder'會做綁定,所以不需要標記 – Xcihnegn 2015-02-24 06:54:16

回答

1

您不需要view.setTag(viewHolder),只需綁定onBindViewHolder(ViewHolder持有者,int位置)中的數據即可。 PS:你應該編輯你的問題的標題來更詳細地描述你的問題。

+0

好的,謝謝。所以標籤是在內部管理的。 – Vineeth 2015-02-24 06:19:00

0

如果您還在適配器中擴展RecyclerView.Adapter,則不需要使用ViewHolder標記該視圖。 RecyclerView適配器要求您實現一些方法,這些方法可指導您創建和綁定視圖持有者。

  • onCreateViewHolder(ViewGroup viewGroup, int i)這是您的充氣查看和創建ViewHolder - 爲RecyclerView.ViewHolder的構造函數需要您在視圖通過。在那裏你執行你需要將數據綁定到持有人的所有操作
  • onBindViewHolder(ViewHolder holder, int i)
  • getItemCount()回到你的RecyclerView

項目數的適配器應該是這個樣子:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { 
    ... 
    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     // TODO: inflate your view and create viewholder, most likely looks like this though 
     View v = LayoutInflater.from(viewGroup.getContext()).inflate(
      R.layout.recycler_view_item, 
      viewGroup, 
      false); 

     MyViewHolder vh = new MyViewHolder(v); 
     return vh; 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder viewHolder, int i) { 
     // TODO: all your bind operations 
    } 

    @Override 
    public int getItemCount() { 
     // TODO: return total item count of your views 
    } 

    public static class MyViewHolder extends RecyclerView.ViewHolder { 
     // TODO: whatever views you need to bind 
     public TextView mTextView; 
     public ImageView mImageView; 

     public MyViewHolder(View v) { 
      super(v); // done this way instead of view tagging 
      mTextView = (TextView) v.findViewById(R.id.textview); 
      mImageView = (ImageView) v.findViewById(R.id.imageview); 
     } 
    } 
} 
+1

不能這樣做!你會得到一個錯誤:'viewHolder是抽象的;無法實例化' – 2016-02-11 14:25:39

+2

您可能實例化了'RecyclerView.ViewHolder'而不是在內部靜態類中聲明的自定義ViewHolder。我會編輯這個例子,使之更清晰。 – ekchang 2016-02-11 16:29:39

相關問題