1

私はmono andriod ListViewを使用しています。私のリストビューには2つのテキストビューと1つの画像が含まれています

そして私の次のコードは動作します

  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();
    };

しかし、リストビュー内にボタンを配置すると、このイベントが機能せず、ボタンクリックで作業できません。モノアンドリオドでリストビュー内のボタンクリックを処理する方法

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 に答える