У меня есть аррайалист объектов. Данные есть, я попробовал распечатать их в тосте. Но почему-то мой список остается непосещенным. Я думаю, что мне не хватает чего-то очевидного здесь. Пожалуйста, взгляните и помогите мне. Заранее спасибо. Вот мой код для вызова адаптера.Почему мой ListView с использованием CustomAdapter не beinmg, заполненный данными, полученными из Firebase, в Arraylist?
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
db= FirebaseDatabase.getInstance().getReference();
listView = (ListView) getView().findViewById(R.id.listView);
items.clear();
myAdapter adapter=new myAdapter(getContext(),retreive());
listView.setAdapter(adapter);
}
public void fetchData(DataSnapshot dataSnapshot){
try {
Item i = (Item) dataSnapshot.getValue(Item.class);
items.add(i);
} catch (Exception e) {
Log.v("Error","exception",e);
}
}
public ArrayList<Item> retreive(){
db.child("Items").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
fetchData(dataSnapshot);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(databaseError.getMessage())
.setTitle("Error!")
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
});
return items;
}
Вот мой адаптер:
public class myAdapter extends BaseAdapter {
private ArrayList<Item> items;
private Context mContext;
public myAdapter(Context mContext, ArrayList<Item> items) {
this.mContext=mContext;
this.items=items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int i) {
return items.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
Item item=(Item)getItem(i);
if (view == null) {
view = LayoutInflater.from(mContext).inflate(R.layout.rowitem, viewGroup, false);
}
TextView text1=(TextView)view.findViewById(R.id.text1);
TextView text2=(TextView)view.findViewById(R.id.text2);
TextView text3=(TextView)view.findViewById(R.id.text3);
TextView text4=(TextView)view.findViewById(R.id.text4);
TextView text5=(TextView)view.findViewById(R.id.text5);
text1.setText(item.getIdno());
text2.setText(item.getName());
text3.setText(item.getBrand());
text4.setText(item.getCost());
text5.setText(item.getDate());
return view;
}
}
http://www.tutorialspoint.com/android/android_list_view.htm смотрите эту –
Вы уверены, что вы получаете значение здесь ** dataSnapshot.getValue (Item.class) **? – Saveen
Yup. Я напечатал его как тост. Все мои ценности прямо там. –