1

我使用一个单声道安卓列表视图,我的列表视图包含 2 个文本视图和一个图像

我的以下代码有效

  listView.ItemClick += (sender, e) =>
    {
        //Get our item from the list adapter
        var item = this.listAdapter.GetItemAtPosition(e.Position);

        //Make a toast with the item name just to show it was clicked
        Toast.MakeText(this, item.Name + " Clicked!", ToastLength.Short).Show();
    };

但是当我在 Listview 中放置一个按钮时,此事件不起作用,我无法处理按钮单击。所以我如何在 Mono andriod 中的 Listview 中处理按钮单击

4

1 回答 1

1

如果您希望在列表视图内的按钮上专门使用单击处理程序,则需要以下内容:

public class CustomListAdapter: BaseAdapter {
    public CustomListAdapter(Context context, EventHandler buttonClickHandler) {
        _context = context;
        _buttonClickHandler = buttonClickHandler;
    }

    public View GetView(int position, View convertView, View parent) {
        var itemView = convertView;

        if(itemView == null) {
            var layoutInflater = (LayoutInflater)_context.GetSystemService(Context.LayoutInflaterService);
            itemView = layoutInflater(Resource.Layout.ItemView);
        }

        var button = itemView.FindViewById<Button>(Resource.Id.MyButton);
        button.Click += _buttonClickHandler;
    }

    // ... Rest of the code omitted for simplicity.
}

此代码没有考虑到按钮可能附加了另一个处理程序这一事实。在耦合新的之前,请确保将旧的解耦。或者添加某种您之前添加过点击处理程序的检测,并且不要添加另一个。

于 2012-09-23T14:45:11.710 回答