vendredi 15 janvier 2016

Xamarin android Listview checkbox checked event

my holder class;

class ViewHolder : Java.Lang.Object
    {
        public TextView kod { get; set; }
        public TextView unvan { get; set; }
        public TextView sebep { get; set; }
        public TextView tarih { get; set; }
        public TextView saat { get; set; }
        public CheckBox checkBox { get; set; }
    }

and my Custom Adapter class constructor;

  public CustomAdapterZiyaretRapor(Activity context, List<Dictionary<string, string>> list)
            : base()
        {
            this.myactivity = context;
            this.ziyaretList = list;         
            for (int i = 0; i < ziyaretList.Count; i++)
            {
                itemChecked.Add(i, false);
            }
        }

And GetView method;

public override View GetView(int position, View convertView, ViewGroup parent)
        {
            View view = convertView;
            Dictionary<string, string> item = this[position];
            ViewHolder holder = null;


            if (view == null)
            {
                holder = new ViewHolder();
                view = myactivity.LayoutInflater.Inflate(Resource.Layout.custom_ziyaret_raporu_listview, parent, false);

                holder.kod = view.FindViewById<TextView>(Resource.Id.txt_ziy_cari_kod);
                holder.unvan = view.FindViewById<TextView>(Resource.Id.txt_ziy_cari_unvan);
                holder.sebep = view.FindViewById<TextView>(Resource.Id.txt_ziy_sebep);
                holder.tarih = view.FindViewById<TextView>(Resource.Id.txt_ziy_tarih);
                holder.saat = view.FindViewById<TextView>(Resource.Id.txt_ziy_saat);
                holder.checkBox = view.FindViewById<CheckBox>(Resource.Id.chc_deneme);
                holder.checkBox.SetTag(Resource.Id.chc_deneme, position);
                view.Tag = holder;
                holder.checkBox.CheckedChange += (object sender, CompoundButton.CheckedChangeEventArgs e) =>
                {
                    var pos= (int) ( ((CheckBox)sender).GetTag(Resource.Id.chc_deneme));
                      if(e.IsChecked)
                    {
                        itemChecked[pos] = e.IsChecked;
                    }

                };

                holder.checkBox.Checked = itemChecked[position];

            }
            else
            {

                holder = view.Tag as ViewHolder;
                holder.checkBox.Checked = itemChecked[position];
            }

            holder.kod.Text = item["mz_carikod"];
            holder.unvan.Text = item["mz_carikod"];
            holder.sebep.Text = item["mz_sebep"];
            holder.tarih.Text = item["mz_tarih"].Split(' ')[0];
            holder.saat.Text = item["mz_tarih"].Split(' ')[1];

            return view;
        }

My problem is; I have a Custom ListView. I want to add checkbox every row in Listview. There is no problem that. But when i checked a checkbox in listview row, some other checkboxes checked too.




Aucun commentaire:

Enregistrer un commentaire