Android — Проблема регулярного повторения в пользовательском listview в getView

#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.