То, что вы получаете в вашем LisView
, это в основном строковое представление вашего Product
объекта.Итак, следующая строка:
com.example.mark.mobilethesis.Product@e8e0966
Фактически представляет адрес объекта Product
из памяти, что, безусловно, не то, что вам нужно.Для отображения обоих данных, description
и qty
, у вас есть три варианта.
Первый и самый простой способ - переопределить метод toString()
в вашем классе Product
, как было также предложенодругие пользователи.Это должно выглядеть так:
@Override
public String toString() {
return description + " / " + qty;
}
Второй вариант - изменить тип вашего списка с Product
на String
следующим образом:
for (DataSnapshot child : children) {
List<String> products = new ArrayList<>();
Product value = child.getValue(Product.class);
products.add(value.getDescription() + " / " + child.getValue());
}
ArrayAdapter<String> productAdapter = new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_list_item_1,
products
);
listViewProducts.setAdapter(productAdapter);
Thirt oneбудет создать пользовательский адаптер.Таким образом, даже если вы передаете весь объект Product
в адаптер, вы можете получить только description
и qty
внутри адаптера.