【问题标题】:How i put button click counter inside listview adapter我如何在 listview 适配器中放置按钮点击计数器
【发布时间】:2018-12-31 19:46:29
【问题描述】:

嗨,我仍然是 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,..等 最好的尊重

【问题讨论】:

    标签: listview android-listview xamarin.android onclicklistener


    【解决方案1】:

    你可以试试这个:

    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
    

    【讨论】:

    • 我尝试但我得到这两个错误持有者&整数:严重性代码描述项目文件行抑制状态错误 CS0103 当前上下文中不存在名称“持有者”和严重性代码描述项目文件行抑制状态错误CS0103 当前上下文中不存在名称“整数”
    • 我已经更新了答案,我的演示中使用的代码,所以现在你应该可以使用它了
    • 工作正常,但计数无效有时会随机计数 1 秒查看次数 .. 即第一次查看次数为 10,24,83..,第二次查看次数为 10,11,12..
    • 这是我的错。 Listview嵌套Button这样写会导致数据乱序。我已经更新了答案,希望对你有帮助!
    • 我推荐大家在使用listview的时候使用holder来复制布局
    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2015-03-22
    • 1970-01-01
    相关资源
    最近更新 更多