使用点击事件创建按钮 Xamarin Android

我有以下 item.xml -


<LinearLayout

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

  <TextView

      android:id="@+id/txtTitle"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content" />


  <Button

      android:id="@+id/[id required here for click event.]"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content" />


</LinearLayout>

使用此布局模板,我在后面的代码中创建了多个项目 -


    public Item(string title, Button btn)

    {

        Text = title;

        Button = btn;

    }


    public override View GetView(int position, View convertView)

    {

        var item = Items[position];

        var view = convertView;


        var contentItem = (Item)item;

        view = _inflater.Inflate(Resource.Layout.ListViewContentItem, null);


        var title = view.FindViewById<TextView>(Resource.Id.txtTitle);

        var btn = view.FindViewById<Button>([button id??]);


        title.Text = contentItem.Text;

        btn = contentItem.Button;


        return view;

    }

我的理解是 id 必须是唯一的,那么如何创建具有唯一 id 的按钮以便我可以访问它们的点击事件?


我的代码必须能够处理多个项目的创建,每个项目都有自己的按钮。


繁花不似锦
浏览 104回答 3
3回答

一只甜甜圈

这很简单,您使用 id 的方式与您使用 TextView 的方式相同所以你的按钮看起来像这样:&nbsp;<Button&nbsp; android:id="@+id/buttonId"&nbsp; android:layout_width="wrap_content"&nbsp; android:layout_height="wrap_content" />现在在您的点击事件中,您可以使用位置参数来找出列表中的哪个元素正在接收点击,例如:&nbsp; var btn = view.FindViewById<Button>(Resource.Id.buttonId);&nbsp; btn.Clicked+= (s,e)=>&nbsp; {&nbsp; &nbsp; if(position==someValue)&nbsp; &nbsp; {//Code}&nbsp; &nbsp; else&nbsp; &nbsp; {//Code}&nbsp; };

湖上湖

在您的 XML 中:<Button&nbsp; android:id="@+id/btn"&nbsp; android:layout_width="wrap_content"&nbsp; android:layout_height="wrap_content" />对于你的活动:Button btn = view.FindViewById<Button>(Resource.Id.btn);btn.Clicked+= btn_click;private void LiveLeadSearch_Click(object sender, EventArgs e){&nbsp; &nbsp;//Your implementation}

呼啦一阵风

您可以在 GetView 方法中编写此代码:&nbsp;var btn = view.FindViewById<Button>(Resource.Id.buttonId);&nbsp; &nbsp; btn.Tag=position;&nbsp; &nbsp; btn.SetOnClickListener(this);在您的适配器中实现“View.IOnClickListener”并覆盖 Onclick 方法后public void OnClick(View v)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch (v.Id)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case Resource.Id.buttonId:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Write code here&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP