Я привел пример кода для реализации RecyclerView, но попытался перенести его для работы в дочернем фрагменте в моем приложении.Android | ViewHolder
Код в разделе «Создание списков - примеры» Creating Lists and Cards
Я бегу в проблемы с моим адаптером ..
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView mTextView;
public ViewHolder(TextView v) {
super(v);
mTextView = v;
}
}
> @Override
> public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
> int viewType) {
> View v = LayoutInflater.from(parent.getContext())
> .inflate(R.layout.my_text_view, parent, false);
> ViewHolder vh = new ViewHolder(v);
> return vh;
> }
Во-первых, он не строит, жалуясь, что я называю конструктор ViewHolder с представлением, когда конструктор ожидает TextView. Глядя на код, я согласен! Но это официальный пример, так что это должно быть правильно?
Так что же отличается от моей версии по сравнению с примером? Две вещи, которые я могу придумать ...
1) макет my_text_view не приведен в примере, поэтому я сделал свой собственный. Я исправился?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/t_title"
android:title="title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
2) Я зову адаптер от моего фрагмента ребенка, и пример был написан не с фрагментами в виду. Я, наверное, откусил больше, чем могу понять.
Все еще, работая до конца, насколько я понимаю. «Родитель», входящий в мой OnCreateViewHolder, является моим RecyclerView?
'v' должен быть LinearLayout моего 'my_text_view'?
«ViewHolder» должен стать классом с свойством mTextView, равным TextView из моего xml.
Я просто не вижу, как я перехожу из v = LinearLayout, в TextView?
Кому-нибудь нравится объяснять этому noob ??
Да, этот пример немного не работает. Просто измените конструктор 'ViewHolder', чтобы взять' View v' и использовать '(TextView) v.findViewById (R.id.t_title)', чтобы получить «TextView». –