RecyclerView не создает элементы - (MVVM + Room + LiveData) - PullRequest
0 голосов
/ 17 октября 2019

Элементы RecyclerView не создаются - я пытаюсь добавить функцию заметки (с MVVM + Room + liveData) в мой проект.

Тот же код подходит для использования в новом проекте студии Android. реализация этого в моем существующем проекте - проблема. (оба с androidX и имеют одинаковые реализации).

Другие recyclerViews в моем приложении работают правильно (не с MVVM)

Адаптер представления переработчика не доступен - я использовал флаги журнала.

Источник кода находится здесь: https://codinginflow.com/tutorials/android/room-viewmodel-livedata-recyclerview-mvvm/part-6-recyclerview-adapter

Примечание активность:

public class NoteActivity extends AppCompatActivity {

    private NoteViewModel noteViewModel;

    ArrayList<Reviews> reviewList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_note);

        RecyclerView recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);

        final NoteAdapter adapter = new NoteAdapter();
        recyclerView.setAdapter(adapter);

        noteViewModel = ViewModelProviders.of(this).get(NoteViewModel.class);
        noteViewModel.getAllNotes().observe(this, new Observer<List<Note>>() {
            @Override
            public void onChanged(@Nullable List<Note> notes) {
                adapter.setNotes(notes);
            }
        });
}

Примечание Адаптер:


public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.NoteHolder> {

    private static final String TAG = "Debug "+NoteAdapter.class.getSimpleName();

    private List<Note> notes = new ArrayList<>();

    @NonNull
    @Override
    public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.note_item, parent, false);
        Log.e (TAG, "in onCreateViewHolder");
        return new NoteHolder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull NoteHolder holder, int position) {
        Note currentNote = notes.get(position);
        holder.textViewTitle.setText(currentNote.getTitle());
        holder.textViewDescription.setText(currentNote.getDescription());
        holder.textViewPriority.setText(String.valueOf(currentNote.getPriority()));
        Log.e (TAG, "in onBindViewHolder");
    }

    @Override
    public int getItemCount() {
        return notes.size();
    }

    public void setNotes(List<Note> notes) {
        this.notes = notes;
        notifyDataSetChanged();

    }

    class NoteHolder extends RecyclerView.ViewHolder {
        private TextView textViewTitle;
        private TextView textViewDescription;
        private TextView textViewPriority;

        public NoteHolder(View itemView) {
            super(itemView);
            textViewTitle = itemView.findViewById(R.id.text_view_title);
            textViewDescription = itemView.findViewById(R.id.text_view_description);
            textViewPriority = itemView.findViewById(R.id.text_view_priority);
            Log.e (TAG, "in NoteHolder");
        }
    }
}

набор примечанийvoid - единственная доступная функция. (используя флаги журнала)

Весь код с классами MVVM работает в пустом студийном проекте.

В чем может быть проблема ??

В журнале он получает эту ошибку:

E/RecyclerView: No adapter attached; skipping layout

1 Ответ

0 голосов
/ 17 октября 2019

Проблема устранена после входа в компоненты MVVM.

Я удалил приложение со своего устройства и снова установил его, поэтому экземпляр базы данных Room был воссоздан правильно. Видимо, экземпляр был пуст (я не знаю почему).

Кстати, эта ошибка журнала не является частью проблемы (вы можете получить ее, когда все в порядке), см. Ранее отвеченный вопрос в ссылке ниже

E/RecyclerView: No adapter attached; skipping layout 

recyclerview Адаптер не подключен;пропускающий макет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...