Recycle View не показывает данные от адаптера

В настоящее время я использую RecyclerView из Android, чтобы показать некоторые данные, которые я получаю из Firebase. Я использую шаблон проектирования MVC, поэтому мне пришлось передать некоторые данные из представления (actViewDB), в контроллер (Controller), а затем в класс модели (DataModel). К сожалению, я всегда получаю ошибку Java NullPointerException, подобную этой

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ryzen.pajakcerdas, PID: 3138
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ryzen.pajakcerdas/com.example.ryzen.pajakcerdas.actViewDB}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.ryzen.pajakcerdas.dataAdapter.setNotes(java.util.List)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.ryzen.pajakcerdas.dataAdapter.setNotes(java.util.List)' on a null object reference
        at com.example.ryzen.pajakcerdas.actViewDB.showModelList(actViewDB.java:22)

Вот код

actViewDB.java

public class actViewDB extends AppCompatActivity {

    private List<DataModel> modelList;
    private RecyclerView rc;
    private dataAdapter adapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.recycle_viewdatabase);

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

        modelList = new ArrayList<>();
    }

    private void showModelList() {
        modelList.add(new DataModel("a", 2, 1, 3));
        adapter.setNotes(modelList);
        rc.setAdapter(adapter);
    }
}

Почему это происходит? Извините, если этот вопрос уже задан, я уже ищу ответ несколько раз с прошлой недели, но все еще не могу это исправить. Ближайшая проблема, которую я обнаружил, - это Android: адаптер просмотра переработчика, но она все еще не решает мою проблему.

Вы забыли инициализировать свой adapter

AskNilesh 14.06.2019 13:35

«адаптер» не инициализирован

Abdul 14.06.2019 13:35
modelList.add(new DataModel("a", 2, 1, 3)); -> ниже этой строки... добавить: adapter = new DataAdapter(); и ТОГДА ваш adapter.setNotes(modelList); и т. д.
Martin Marconcini 14.06.2019 13:36

Большое спасибо, теперь это работает. Но хотите задать последний вопрос, как инициализировать RecycleView? Мне пришлось изменить showModelList() для вызова из контроллера, потому что я реализую архитектуру MVC.

Achmad Farhan Mustaqim 14.06.2019 14:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны инициализировать adapter перед вызовом его метода

adapter = new DataAdapter();

Спасибо, это работает. но затем у меня возникли новые проблемы: RecycleView имеет значение Null, потому что я изменил метод showModelList() для вызова из контроллера. я должен инициализировать RecycleView тоже? как это сделать?

Achmad Farhan Mustaqim 14.06.2019 14:15

нет, вам нужно получить ссылку на recyclerview от контроллера, вызвав activity.recyclerview, ведь это новая проблема, вам нужно задать новый вопрос и опубликовать свой код, чтобы мы могли вам помочь. не стесняйтесь голосовать за мой ответ. Рад был помочь.

Mohammad Sommakia 14.06.2019 14:21

Другие вопросы по теме

Похожие вопросы

Синтаксический анализ даты ISO8601 игнорирует смещение
Ни BindingResult, ни простой целевой объект для имени bean-компонента «bookDto» не доступны в качестве атрибута запроса
Потоки в Java намного медленнее, чем родной цикл for - почему?
Создание файла JSON с использованием для каждого цикла и карты. Повторяет значение первого элемента на всех итерациях цикла for
Любые идеи, как сделать мой код эффективным для циклов 10 000 000 000 раз
Есть ли несколько способов установить значение bean-компонента и сохранить их в базе данных с помощью PersistentObject?
Как разрешить анонимный доступ пользователей с локального хоста только в безопасности Spring?
Не может конвертировать из ChromeDriver в WebDriver в веб-драйвере selenium с java, как это преодолеть?
Получено событие сбоя для теста с неизвестным идентификатором «5.14». Зарегистрированные идентификаторы тестов: '[:my.project:test, 5.1]'
Spark не может найти зависимости