Сбой ArrayAdapter при вызове NotifyDataSetChanged () в Android - PullRequest
0 голосов
/ 06 января 2019

У меня есть база данных Firestore, в которую я корректно извлекаю данные, потому что я печатаю размер массива, и он правильный, но мне не удается отобразить его в виде списка. Я твердо верю, что это как-то связано с моим адаптером.

При добавлении метода NotifyDataSetChanged () происходит сбой приложения.

Мой код:

public class AdminProducts extends Activity {

private static final String TAG = "AdminProducts";
public ListView myListView;
FirebaseFirestore db;
final ArrayList<String> nameData = new ArrayList<>();
ArrayAdapter myAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_admin_products);
    myListView = (ListView)findViewById(R.id.myProductList);
    db = FirebaseFirestore.getInstance();
    myAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, nameData);
    myListView.setAdapter(myAdapter);


    CollectionReference collectionReference = db.collection("myDB");
    collectionReference.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            if(!queryDocumentSnapshots.isEmpty()){
                List<DocumentSnapshot> list = queryDocumentSnapshots.getDocuments();
                String name = "xx";
                for(DocumentSnapshot d : list){
                    FirestoreProducts firestoreProducts = d.toObject(FirestoreProducts.class);
                    name = firestoreProducts.getName();
                    nameData.add(name);
                }
                Toast.makeText(AdminProducts.this, name + nameData.size(), Toast.LENGTH_SHORT).show();
                ((ArrayAdapter)myListView.getAdapter()).notifyDataSetChanged();
            }
        }
    });
}

}

1 Ответ

0 голосов
/ 06 января 2019

Хорошо, я решил проблему. Проблема заключалась в том, что один из индексов массива получал нулевое значение, поэтому он выдавал ошибку NullPointerException. Код, который я разместил, отлично работает. Спасибо.

...