У меня есть пользовательский ListView
, который отображает мои данные из базы Firebase, но это неверно.
Изображение базы данныхСтруктура
Как видно на изображениях, она отображает все данные в одну строку "[a, ab, abc]".Это неправильно, потому что мне нужно, чтобы он отображался в каждой строке следующим образом.
a
ab
abc
Я сохранил данные, которые я извлек из firebaseв списке массивов
private ArrayList<String> arrayList = new ArrayList<String>();
я сохранил его с помощью addChildEventListener
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String string = dataSnapshot.getValue(String.class);
arrayList.add(string);
customAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
А вот как я сделал свой пользовательский адаптер
public class CustomListAdapter extends ArrayAdapter<String>{
@Override
public int getCount() {
return arrayList.size();
}
private final Activity context;
private final Integer[] imgid;
private final ArrayList<String> arrayList;
public CustomListAdapter(Activity context, ArrayList<String> arrayList, Integer[] imgid) {
super(context, R.layout.customlayout);
// TODO Auto-generated constructor stub
this.context=context;
this.arrayList = arrayList;
//this.itemname=itemname;
this.imgid=imgid;
}
public View getView(int position,View view,ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.customlayout, null,true);
ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView);
TextView txtTitle = (TextView) rowView.findViewById(R.id.textView_name);
txtTitle.setText(arrayList.toString());
imageView.setImageResource(imgid[position]);
return rowView;
}
}
, затем я объявил пользовательскийАдаптер в OnCreate
customAdapter = new CustomListAdapter(Form1Main.this, arrayList, imgid);
Теперь мне просто нужно правильно выполнить итерацию по вертикали вместо того, чтобы иметь вывод, подобный тому, что показан на первом рисунке [a, ab, abc], до
a
ab
abc