#android #android-studio
#Android #android-studio
Вопрос:
Я извлекаю данные в пользовательский Listview из базы данных mysql, но, как следует, у меня есть пользовательская кнопка. Кнопка либо черная, либо красная, в соответствии с записями в базе данных. Например, в моей базе данных есть 30 выходов, и я извлекаю данные только с 2 красными и 28 черными. Допустим, данные красным цветом — это мои данные под номером 3 и данные под номером 5. Когда я начинаю прокручивать вниз; мои данные с номерами 3 и 5 становятся красными, затем 8 данных, затем число выхода 13 и 15, 23 и 25 становится красным .. таким образом, происходит повторение.. Я не могу это предотвратить.. Есть ли решение для этого? Можете ли вы предоставить поддержку с примером кода? Мой пользовательский код адаптера выглядит следующим образом:
public class CostumAdaptor extends ArrayAdapter<Ses> {
private ArrayList<Ses> list;
private ViewHolderr vHolder;
boolean flag = false;
public CostumAdaptor(Context context, int resource, ArrayList<Ses> list) {
super(context, resource, list);
list = new ArrayList<Ses>();
list.addAll(list);
}
public int getCount() {
return list.size();
}
public Ses getItem(int position) {
return list.get(position);
}
public long getItemId(int position) {
return list.get(position).hashCode();
}
public View getView(int position, View conView, ViewGroup parent) {
View vi = conView;
if (vi == null) {
vHolder = new ViewHolderr();
vi = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.tiyatro_item, null);
vHolder.tiyatro_adi = vi.findViewById(R.id.tiyatro_adi);
vHolder.begeni_sayisi2 = (TextView) vi.findViewById(R.id.begeni_sayisi2);
vHolder.daha_sonra_dinleyecegim_2 = (TextView) vi.findViewById(R.id.daha_sonra_dinleyecegim_2);
vHolder.begenmedim_2 = (TextView) vi.findViewById(R.id.begenmedim_2);
vHolder.tiyatro = vi.findViewById(R.id.tiyatro);
vHolder.tur = vi.findViewById(R.id.tur);
vHolder.mensei = vi.findViewById(R.id.mensei);
vHolder.yapimci = vi.findViewById(R.id.yapimci);
vHolder.songCoverImage = vi.findViewById(R.id.coverImage);
vHolder.begendim = vi.findViewById(R.id.begendim);
vHolder.begenmedim = vi.findViewById(R.id.begenmedim);
vHolder.daha_sonra_dinleyecegim = vi.findViewById(R.id.daha_sonra_dinleyecegim);
vi.setTag(vHolder);
}
else {
vHolder = (ViewHolderr) vi.getTag();
}
Ses dmodel = (Ses) list.get(position);
String t_tiyatro_adi = dmodel.getTiyatro_adi();
vHolder.tiyatro_adi.setTag(dmodel);
vHolder.tiyatro.setTag(dmodel);
vHolder.tur.setTag(dmodel);
vHolder.mensei.setTag(dmodel);
vHolder.yapimci.setTag(dmodel);
vHolder.begendim.setTag(dmodel);
vHolder.tiyatro_adi.setText(dmodel.getTiyatro_adi());
vHolder.tiyatro.setText(dmodel.getTiyatro());
vHolder.tur.setText(dmodel.getTur());
vHolder.mensei.setText(dmodel.getMensei());
vHolder.yapimci.setText(dmodel.getYapimci());
String CACHE = t_tiyatro_adi;
new Handler().postDelayed(new Runnable() {
public void run() {
for (int i = 0; i < List1.size(); i ) {
for (int ii = 0; ii < List2.size(); ii ) {
if (List1.get(i).equals(List2.get(ii))) {
if (List1.get(i).equals(CACHE)) {
flag = true;
vHolder.begendim.setImageResource(R.drawable.begendim_dolu);
}
}
}
}
if (!flag) {
vHolder.begendim.setImageResource(R.drawable.begendim_bos);
}
}
}, 250);
return vi;
}
private class ViewHolderr {
TextView tiyatro_adi, tiyatro, tur, mensei, yapimci, begeni_sayisi2, daha_sonra_dinleyecegim_2, begenmedim_2;
ImageView songCoverImage;
ImageView begendim;
}
}
Примечание: List1 и List2 — это списки массивов, извлеченные из базы данных mysql и сравниваемые с циклом for. В результате сравнения цвет кнопки становится красным или черным.
Комментарии:
1. Есть ли кто-нибудь, кто может мне помочь?
2. Я решил свою проблему с помощью RecyclerView.