首页 技术 正文
技术 2022年11月14日
0 收藏 435 点赞 2,170 浏览 3082 个字

需求:为Listview的Item里面的按钮Button添加一个事件,单击按钮时通过事件传值并跳转到新的页面。

环境:mono

效果:

mono for android Listview 里面按钮 view Button click 注册方法 并且传值给其他Activity 主要是context

mono for android Listview 里面按钮 view Button click 注册方法 并且传值给其他Activity 主要是context

布局代码

主布局

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/myList"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>

MainLayout

Item布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
> <TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/> <Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
/>
</RelativeLayout>

ListviewItemlayout

MainActivity

 using System; using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using System.Collections.Generic; namespace ListViewItemBtnClick
{
[Activity(Label = "ListViewItemBtnClick", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
ListView listView; protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle); SetContentView(Resource.Layout.Main); listView = FindViewById<ListView>(Resource.Id.myList); //填充Listview
getList(listView); } //获取Listview
private void getList(ListView listview)
{ Adapter goodsAdapter = new Adapter(this);
List<Item> itemList = new List<Item>();
Item item = new Item(); //给Item赋值 并且添加到list里面
for (int i = ; i <; i++)
{
item.title = i + "|标题|";
item.button = i + "btn";
itemList.Add(item);
}
//给adapter中添加list的值
foreach (Item item1 in itemList)
{
goodsAdapter.Add(item1);
}
//将adapter的值付给listview
listview.Adapter = goodsAdapter;
} }
}

MainActivity

Item类

    class Item
{
//标题 textview
public string title { get; set; }
//按钮
public string button { get; set; }
}

Item

Adapter配置数据

 namespace ListViewItemBtnClick
{
class Adapter:ArrayAdapter<Item>,View.IOnClickListener
{ private Context context; public Adapter(Context context):base(context,){
//通过构造函数获取context
this.context = context; } public override View GetView(int position, View convertView, ViewGroup parent)
{
View view;
//如果convertView不为空则直接使用
if (convertView!=null)
{
view = convertView; } else
{
view = LayoutInflater.From(this.Context).Inflate(Resource.Layout.ListItem, null); } //设置title的值
TextView title = view.FindViewById<TextView>(Resource.Id.txt);
Button btn = view.FindViewById<Button>(Resource.Id.btn); Item item = GetItem(position); title.Text = item.title + position;
//给每个按钮添加一个tag tag的值为position 或者自定义的ID
btn.SetTag(Resource.Id.btn,position);
btn.Text ="--"+ position+"---";
//注册事件
btn.SetOnClickListener(this);
return view;
} public void OnClick(View v)
{
//获得点击的按钮
Button btn = v as Button;
//获得tag
int id = Convert.ToInt32(btn.GetTag(btn.Id)); Intent it = new Android.Content.Intent(); it.SetClass(context,typeof(Activity2));
it.PutExtra("pos", id);
//注意!启动新Activity
context.StartActivity(it);
}
}
}

Adapter

在其他地方显示数据

  string PosValue = Intent.GetStringExtra("pos");             Toast.MakeText(this, PosValue.ToString(), ToastLength.Long).Show();

欢迎交流——小査 1070437522@qq.com

欢迎大家访问我老婆的淘宝店……说是博客园看到的包邮哦!   

http://yishids.taobao.com

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905