在我們的適配器中使用android.support.v7.widget.RecyclerView.ViewHolder時,它是否需要視圖標記,就像我們之前做的那樣。 或者庫在後臺自動執行它?android.support.v7.widget.RecyclerView.ViewHolder
回答
您不需要view.setTag(viewHolder),只需綁定onBindViewHolder(ViewHolder持有者,int位置)中的數據即可。 PS:你應該編輯你的問題的標題來更詳細地描述你的問題。
好的,謝謝。所以標籤是在內部管理的。 – Vineeth 2015-02-24 06:19:00
如果您還在適配器中擴展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);
}
}
}
不能這樣做!你會得到一個錯誤:'viewHolder是抽象的;無法實例化' – 2016-02-11 14:25:39
您可能實例化了'RecyclerView.ViewHolder'而不是在內部靜態類中聲明的自定義ViewHolder。我會編輯這個例子,使之更清晰。 – ekchang 2016-02-11 16:29:39
- 1. android.support.v7.app.AlertController.RecycleListView和android.support.v7.widget.RecyclerView
- 2. android.support.v7.appCompactActivity
- 3. 衰落android.support.v7.widget.Toolbar
- 4. java.lang.NoClassDefFoundError android.support.v7.view.menu.MenuBuilder
- 5. android.support.v7.widget.AppCompatEditText錯誤
- 6. 在android.support.v7.widget.RecyclerView.onMeasure java.lang.NullPointerException
- 7. java.lang.NoSuchFieldError的:android.support.v7.appcompat
- 8. 造型android.support.v7.preference.SeekBarPreference
- 9. IntelliJ和android.support.v7.widget.GridLayout
- 10. java.lang.IllegalStateException:RelativeLayout的在android.support.v7.app.WindowDecorActionBar.getDecorToolbar
- 11. android.support.v7.app.AppCompatActivity vs android.support.v4.app.ActivityCompat
- 12. Obfuscate android.support.v7.widget.GridLayout問題
- 13. android.support.v7.widget.AppCompatTextview Failed to instataniate
- 14. ClassCastException異常:android.support.v7.widget.ShareActionProvider
- 15. 問題與android.support.v7.app.ActionBarActivity
- 16. Canot解決android.support.v7.internal.widget.TintImageView
- 17. android.support.v7.widget.Toolbar.getNavigationIcon()返回null
- 18. NoClassDefFoundError的:android.support.v7.widget.helper.ItemTouchHelper $ 3
- 19. android.support.v7.app.MediaRouteButton不顯示
- 20. android.support.v7.app.ActionBarActivity未解決
- 21. 嘗試調用虛擬方法'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView $ LayoutManager
- 22. Chromecast:Gradle:包android.support.v7.media不存在
- 23. 沒有找到類「android.support.v7.internal.widget.TintManager」
- 24. android.support.v7 jar文件不存在
- 25. android.support.v7.internal.widget.ActionBarOverlayLayout無法實例化
- 26. 以下類找不到-android.support.v7
- 27. android.support.v7.widget.Toolbar.getTitle()'空對象引用
- 28. android.support.v7.internal.app佈局渲染
- 29. 錯誤膨脹類android.support.v7.widget.AppCompatTextView
- 30. android.support.v7.widget.GridLayout無法啓動它
'onBindViewHolder'會做綁定,所以不需要標記 – Xcihnegn 2015-02-24 06:54:16