Я обнаружил некоторую проблему с моим пользовательским адаптером gridview, я добавил позиции от 1 до 10. Все верно до номера 6, после этого вместо того, чтобы показывать число 7/8, показывает номера 2 и 1. Я понятия не имею, что не так.
Я новичок ie, и я был бы признателен за любую помощь. Спасибо
Вот изображение проблемы.
Вот код из адаптера gridview
public class GvOrdersAdapter extends BaseAdapter
{
private Context context;
private final String[] nameValues;
private final String[] danieValues;
private final String[] danie2Values;
private final String[] zupaValues;
private final String[] statusValues;
GvOrdersAdapter(Context context, String[] nameValues, String[] danieValues, String[] danie2Values,
String[] zupaValues, String[] statusValues)
{
this.context = context;
this.nameValues = nameValues;
this.danieValues = danieValues;
this.danie2Values = danie2Values;
this.zupaValues = zupaValues;
this.statusValues = statusValues;
}
@SuppressLint({"ResourceAsColor", "SetTextI18n", "InflateParams"})
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null)
{
// get layout from mobile.xml
assert inflater != null;
gridView = inflater.inflate(R.layout.gv_ordered_list, null);
// set value into textview
TextView tvName = gridView.findViewById(R.id.tvName);
TextView tvDanie = gridView.findViewById(R.id.tvDanieGlowne);
TextView tvDanie2 = gridView.findViewById(R.id.tvDodatki);
TextView tvZupa = gridView.findViewById(R.id.tvZupa);
TextView tvStatus = gridView.findViewById(R.id.tvStatus);
tvName.setText(nameValues[position]);
tvDanie.setText((danieValues[position]));
tvDanie2.setText((danie2Values[position]));
tvZupa.setText((zupaValues[position]));
if (statusValues[position].contains("Poczekaj na akceptacje zamówienia"))
{
tvStatus.setText((statusValues[position]) + "\n");
}
else if (statusValues[position].contains("Przyjęto, w trakcie realizacji"))
{
tvStatus.setText((statusValues[position])+"\n");
tvStatus.setTextColor(context.getResources().getColor(R.color.ordered_wait_for_accept));
}
else if (statusValues[position].contains("W transporcie"))
{
tvStatus.setText((statusValues[position])+"\n");
tvStatus.setTextColor(context.getResources().getColor(R.color.ordered_accepted));
}
else if (statusValues[position].contains("Dostarczone"))
{
tvStatus.setText((statusValues[position])+"\n");
tvStatus.setTextColor(context.getResources().getColor(R.color.colorPrimary));
}
} else
{
gridView = convertView;
}
return gridView;
}
@Override
public int getCount()
{
return nameValues.length;
}
@Override
public Object getItem(int position)
{
return null;
}
public boolean isEnabled(int position)
{
return true;
}
@Override
public long getItemId(int position) {
return position;
}
}
, собирающий данные из базы данных о пожарной деятельности из действия
private void ZlozoneZamowieniaList() {
DatabaseReference ordered = FirebaseDatabase.getInstance().getReference().child("Złożone zamówienia");
ordered.child(thisYear)
.child(thisMonth)
.child(thisDay)
.child(Firma)
.orderByChild("name")
.equalTo(id)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
ClearLists(); //WYCZYŚĆ LISTY
for (DataSnapshot snapshot : dataSnapshot.getChildren())
{
String imie = snapshot.child("imie").getValue(String.class);
String danie = snapshot.child("danie").getValue(String.class);//ITD
String dodatek = snapshot.child("dodatek").getValue(String.class);//ITD
String zupa = snapshot.child("zupa").getValue(String.class);//ITD
String id = snapshot.child("informacjeDlaObslugi").getValue(String.class);//ITD
String gotKey = snapshot.child("key").getValue(String.class);//ITD
String status = snapshot.child("status").getValue(String.class);//ITD
if (status != null && !status.contains("Zamówienie anulowane przez klienta"))
{
mListName.add(imie);
if (danie != null)
{
mListDish.add(danie);
}else
{
mListDish.add(" ");
}
if (dodatek != null)
{
mListDish2.add(dodatek);
} else {
mListDish2.add(" ");
}
if (zupa != null)
{
mListSoup.add(zupa);
} else {
mListSoup.add(" ");
}
if (id != null)
{
mListInfo.add(id);
} else {
mListInfo.add(" ");
}
mListStatus.add(status);
keyList.add(gotKey);
}
String[] sListName = mListName.toArray(new String[0]);
String[] sListDish = mListDish.toArray(new String[0]);
String[] sListDish2 = mListDish2.toArray(new String[0]);
String[] sListSoup = mListSoup.toArray(new String[0]);
String[] sListStatus = mListStatus.toArray(new String[0]);
GvOrdersAdapter GvAdapter = new GvOrdersAdapter(getContext(), sListName, sListDish,
sListDish2, sListSoup, sListStatus);
gvOrderedMeals.setAdapter(GvAdapter);
GvClear();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
}
});
}
данные собраны правильно, потому что когда я создаю alerttdaliog после нажатия на gridview, он показывает мне правильные данные.