为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
繁花不似锦 2022-11-21 20:11:07
我有以下 item.xml -<LinearLayoutandroid: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 的按钮以便我可以访问它们的点击事件?我的代码必须能够处理多个项目的创建,每个项目都有自己的按钮。
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

这很简单,您使用 id 的方式与您使用 TextView 的方式相同


所以你的按钮看起来像这样:


 <Button

  android:id="@+id/buttonId"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

现在在您的点击事件中,您可以使用位置参数来找出列表中的哪个元素正在接收点击,例如:


  var btn = view.FindViewById<Button>(Resource.Id.buttonId);

  btn.Clicked+= (s,e)=>

  {

    if(position==someValue)

    {//Code}

    else

    {//Code}

  };


查看完整回答
反对 回复 2022-11-21
?
湖上湖

TA贡献2003条经验 获得超2个赞

在您的 XML 中:


<Button

  android:id="@+id/btn"

  android:layout_width="wrap_content"

  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)

{

   //Your implementation

}


查看完整回答
反对 回复 2022-11-21
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

您可以在 GetView 方法中编写此代码:


 var btn = view.FindViewById<Button>(Resource.Id.buttonId);

    btn.Tag=position;

    btn.SetOnClickListener(this);

在您的适配器中实现“View.IOnClickListener”并覆盖 Onclick 方法后


public void OnClick(View v)

        {

            switch (v.Id)

            {

                case Resource.Id.buttonId:

                   //Write code here

                    break;


            }


        }


查看完整回答
反对 回复 2022-11-21
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信