Невозможно использовать Контекст внутри Firebase valueEventListener - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь получить список элементов из Firebase, и после того, как все данные получены, я хочу накачать данные в listView с помощью адаптера. Вот код, который я использую:

vehicleReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()){

                    for (DataSnapshot data : dataSnapshot.getChildren()){
                        ServiceHistoryDataModel serviceHistoryData = data.getValue(ServiceHistoryDataModel.class);
                        serviceHistoryDataList.add(serviceHistoryData);
                    }

                    ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter (this,serviceHistoryDataList,getLayoutInflater());
                    listView.setAdapter(adapter);

                }else
                    Toast.makeText(ServiceHistoryActivity.this, "No service history available !", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

(см. Скриншот)

Я получаю ошибку: -

"ServiceHistoryListAdpter () в ServiceHistoryListAdapter не может быть применяется: ... "

Для строки:

ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter (this,serviceHistoryDataList,getLayoutInflater());

Не могли бы вы дать мне знать, как я могу решить эту проблему?

enter image description here

Ответы [ 5 ]

0 голосов
/ 29 апреля 2018

Замените ваш код этим.

ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter(ActivityName.this,serviceHistoryDataList,getLayoutInflater());
0 голосов
/ 27 апреля 2018

Пожалуйста, замените

ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter(this,serviceHistoryDataList,getLayoutInflater());

с

ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter(YourActivityName.this,serviceHistoryDataList,getLayoutInflater());
0 голосов
/ 27 апреля 2018

Просто передайте параметр типа «YourActivityName.this», ваша проблема будет решена. Проверьте код ниже для того же.

ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter(YourActivityName.this,serviceHistoryDataList,getLayoutInflater());
0 голосов
/ 27 апреля 2018
ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter(YourActivityName.this,serviceHistoryDataList,getLayoutInflater());
0 голосов
/ 27 апреля 2018

Вы хотите получить доступ к экземпляру включающего класса из анонимного класса. Синтаксис для которого EnclosingClassName.this. Поэтому измените строку на:

ServiceHistoryListAdapter adapter = new ServiceHistoryListAdapter(YourActivityName.this,serviceHistoryDataList,getLayoutInflater());

т.е. добавить YourActivityName. перед this.

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