Как поместить счетчик нажатий кнопок в адаптер списка - PullRequest
0 голосов
/ 31 декабря 2018

привет, я все еще новичок в xamarin android :( я делаю просмотр списка одним нажатием кнопки, что, когда я нажимаю кнопку, я буду считать щелчок и показывать в button.text, но я не могу справиться и с щелчком мыши

вот мойGetView код адаптера:

public override View GetView(int position, View convertView, ViewGroup parent)
        {
            var item = items[position];
            View view = convertView;
            if (view == null) // no view to re-use, create new
                view = context.LayoutInflater.Inflate(Resource.Layout.list_ticket_view, null);
            view.FindViewById<TextView>(Resource.Id.maintxt).Text = item.maintitle;
            view.FindViewById<TextView>(Resource.Id.txtthwab).Text = item.thwab;

            var button1 = view.FindViewById<Button>(Resource.Id.button1);
             button1.Text = (item.counter).ToString();
         }

я делаю button1, беру стартовое значение из item.counter и начинаю считать, т.е. item.counter = 10 из класса, когда клик будет 11,12,13, ... и т. д. наилучшим образом

1 Ответ

0 голосов
/ 01 января 2019

вы можете попробовать это:

class YourAdapter : BaseAdapter, View.IOnClickListener
    {

        private Dictionary<int, string> dictionary = new Dictionary<int, string>();

        int[] item;  //this is the data in my code ,you should replace your own data

    public YourAdapter(int[] value)  // the parameter use your own data
        {

            //copy your data into the dictionary
            item = value;
            for (int i = 0; i < item.Length; i++)
            {
                dictionary.Add(i,item[i].ToString());
            }
        }

public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var item = items[position];
        View view = convertView;
        if (view == null) // no view to re-use, create new
            view = context.LayoutInflater.Inflate(Resource.Layout.list_ticket_view, null);
        view.FindViewById<TextView>(Resource.Id.maintxt).Text = item.maintitle;
        view.FindViewById<TextView>(Resource.Id.txtthwab).Text = item.thwab;

        var button1 = view.FindViewById<Button>(Resource.Id.button1);
        button1.Text = dictionary[position];
        button1.Tag = position;
        button1.SetOnClickListener(this);
        return convertView;
     }
}
 public void OnClick(View v)
        {
            var button = v as Button;
            int count = int.Parse(button.Text) + 1;
            button.Text = count.ToString();
            dictionary[(int) v.Tag] = count.ToString();
        }

позвольте вашему adapter орудию View.IOnClickListener например:

class MyAdapter : BaseAdapter ,View.IOnClickListener
...