RecyclerView.Adapter onCreateViewHolder и методы onBindViewHolder не получают вызова

Я пытаюсь реализовать TwoWayView в своем проекте, следуя образцу проекта, представленному в этой ссылке. Я реализовал все, и мой код работает без ошибок, но фактический список не накачивается. После отладки я узнал, что адаптер настроен правильно, и метод getItemCount также возвращает положительный результат, но другие два переопределенных метода onCreateViewHolder и onBindViewHolder не получают onBindViewHolder . Я не знаю, почему он не работает. См. Частичный код ниже, любая помощь приветствуется. Благодарю.

Класс MyAdapter.java

 public class MyAdapter extends RecyclerView.Adapter < MyViewHolder > { private MySimpleCursorAdapter mCursor; //some other private fields here public MyAdapter(Context context, Cursor c, int resourceId, ViewType viewType, String containerId) { mCursor = new MySimpleCursorAdapter(a1,a2,a3,a4,a5,a6); //Passed necessary arguments .... } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.w("onCreateViewHolder", "--------->executed"); //Line not executed final View view = mCursor.newView(mContext, mCursor.getCursor(), parent); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { Log.w("onBindViewHolder", "--------->executed"); //Line not executed mCursor.bindView(holder.itemView, mContext, mCursor.getCursor()); } @Override public int getItemCount() { Log.w("count", Integer.toString(mCursor.getCount())); //This is executed return mCursor.getCount(); } private class MySimpleCursorAdapter extends SimpleCursorAdapter { public MySimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { super(context, layout, c, from, to, flags); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = mLayoutInflater.inflate(mLayoutToInflate, null); .... return view; } @Override public void bindView(final View view, Context context, Cursor cursor) { //Implemented this method for inflating all subviews inside each item of the list } } } 

Примечание. Я прошел аналогичные вопросы, но предоставленные ответы не имеют отношения к моему вопросу, потому что мой RecyclerView не находится внутри ScrollView а getItemCount возвращает положительный результат.

Я думаю, вы забыли setLayoutManager(LayoutManager) в представлении recycler. Без диспетчера getItemCount() только getItemCount() .

Попробуйте с помощью yourRecyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));

Во-первых, вы должны сохранить ссылку на контекст при создании экземпляра адаптера:

 public class MyAdapter extends RecyclerView.Adapter < MyViewHolder > { private MySimpleCursorAdapter mCursor; private Context context; // <-- add this line //some other private fields here public MyAdapter(Context context, Cursor c, int resourceId, ViewType viewType, String containerId) { mCursor = new MySimpleCursorAdapter(a1,a2,a3,a4,a5,a6); this.context = context; // <-- add this line //Passed necessary arguments .... } 

Затем в методе onCreateViewHolder используйте эту ссылку для контекста, чтобы создать представление для ViewHolder:

  public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.w("onCreateViewHolder", "--------->executed"); //Line not executed final View view = mCursor.newView(context, mCursor.getCursor(), parent); return new MyViewHolder(view); } 

Затем в вашем CursorAdapter раздуйте представление следующим образом:

  public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = LayoutInflater.from(context).inflate(mLayoutToInflate, parent, false); return view; } 

У меня была такая же проблема, хотя я использовал вызов JSON для извлечения данных вместо адаптера курсора, и эти изменения устранили проблему.