Есть ли способ, которым я могу использовать firebaseUI для заполнения элементов счетчика, как я сделал бы с ListView или RecyclerView? - PullRequest
0 голосов
/ 22 ноября 2018

Использование слушателей childevent прекрасно работало для заполнения моего счетчика из моей базы данных Firebase в реальном времени, но это не так эффективно, как использование firebaseUI.документация охватывает только просмотр и просмотр списка, но я хочу использовать его для прядильщика.

 Query query = FirebaseDatabase.getInstance().getReference("Labs");

        FirebaseListOptions<Labs> options = new FirebaseListOptions.Builder<Labs>().setQuery(query, Labs.class).build();


        FirebaseListAdapter<Labs> firebaseListAdapter = new FirebaseListAdapter<Labs>(options) {
            @Override
            protected void populateView(@NonNull View v, @NonNull Labs model, int position) {

            }


        };

        spinner.setAdapter(firebaseListAdapter);

Я просто не знаю, как связать мой объект модели с представлением здесь.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

В вашем коде есть две проблемы.Во-первых, вы получаете следующую ошибку:

layout cannot be null

Поскольку вы не назначаете макет в вашем методе populateView().В вашем коде этот метод пуст.Поэтому вы должны создать пользовательский макет, который может содержать TeexView для каждого элемента, который поможет вам решить эту проблему.

Вторая проблема заключается в том, что вы используете FirebaseListAdapter, но нигде не прослушиваете изменения.Чтобы решить эту проблему, используйте следующую строку кода в вашем методе onStart():

firebaseListAdapter.startListening();

Не забудьте также удалить его, если он не нужен, добавив следующие строки кода в onStop() метод:

if(firebaseListAdapter != null) {
    firebaseListAdapter.stopListening();
}
0 голосов
/ 22 ноября 2018

У вас есть два варианта: один - просто инициализировать ваш ArrayAdapter списком данных, которые вы получили по запросу

ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item,querylistData);
spinner.setAdapter(adapter);

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

FirebaseListAdapter<Labs> firebaseListAdapter = new FirebaseListAdapter<Labs>(this, Labs.class ,android.R.layout.simple_spinner_item, query) {
   protected void populateView(View v,Lab model, int position)
     { 


         ((TextView)v.findViewById(android.R.id.text1)).setText(model.getName());

     }
 };
 spinner.setAdapter(firebaseListAdapter);
...