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

环境:mono

效果:

布局代码

主布局

 <?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

mono for android Listview 里面按钮 view Button click 注册方法 并且传值给其他Activity 主要是context的更多相关文章

  1. Android Market google play store帐号注册方法流程 及发布应用注意事项【转载】

    [转载]http://www.cnblogs.com/zdz8207/archive/2012/07/09/google-play-store-registered.html Android Mark ...

  2. Android Market google play store帐号注册方法流程 及发布应用注意事项

    Android Market google play store帐号申请 注册方法流程 在 Google Play 中发布软件之前,您需要完成以下三项工作: 创建开发人员个人资料 接受开发人员分发协议 ...

  3. Android ListView中按钮监听器设置的解决方案

    在做安卓应用开发的时候很经常会用到ListView,并且每一个Item里面都会有按钮之类的需要进行事件监听的控件.在给按钮添加OnClickListener的时候,一开始很下意识的会想在ListVie ...

  4. Mono for android 如何动态添加View,线程内部如何更新UI.

    貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI. 如 在WinForm 中 就可以使用Control.Invoke(Action ac ...

  5. 解决Android ListView 和 ScrollView 共存时冲突 问题 方法其一

    转载请注明出处: http://www.goteny.com/articles/2013/11/8.html http://www.cnblogs.com/zjjne/p/3428480.html 当 ...

  6. 在Activity中响应ListView内部按钮的点击事件的两种方法!!!

    在Activity中响应ListView内部按钮的点击事件的两种方法 转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题: ...

  7. Mono for Android (1) 之布局

    最近和同事交接工作,首次接触mono for android, 结果画view时少了layout,页面没办法出来,各种冥思,各种找问题,最后把关于布局的一些共享出来(同事写的,哈哈):   Andro ...

  8. 小程序mpvue怎么点击按钮获取button里面的值

    在小程序里面是没有dom元素的,这个我们只要会小程序的应该都知道,但是在平时开发中我们偶尔会遇到需要点击某个元素获取它的值的情况,在这里给大家列举了两种情况解决方法 方式一:数据绑定 这种情况的话,对 ...

  9. 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】

    因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...

随机推荐

  1. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  2. 算法笔记_013:汉诺塔问题(Java递归法和非递归法)

    目录 1 问题描述 2 解决方案  2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...

  3. 【原】AFNetworking源码阅读(一)

    [原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...

  4. Android业务组件化之现状分析与探讨

    前言: 从个人经历来说的话,从事APP开发这么多年来,所接触的APP的体积变得越来越大,业务的也变得越来越复杂,总来来说只有一句话:这是一个APP臃肿的时代!所以为了告别APP臃肿的时代,让我们进入一 ...

  5. vue.js学习笔记

    有了孩子之后,元旦就哪也去不了了(孩子太小),刚好利用一些时间,来公司充充电补补课,学习学习新技术,在这里做一个整理和总结.(选择的东西,既然热爱就把他做好吧!). 下来进入咱们的学习环节: 一.从H ...

  6. AFNetworking 3.0 源码解读(八)之 AFImageDownloader

    AFImageDownloader 这个类对写DownloadManager有很大的借鉴意义.在平时的开发中,当我们使用UIImageView加载一个网络上的图片时,其原理就是把图片下载下来,然后再赋 ...

  7. NSStringCompareOptions

    typedefNS_OPTIONS(NSUInteger, NSStringCompareOptions) { NSCaseInsensitiveSearch = 1,    //不区分大小写比较 N ...

  8. windows10安装mysql5.7.17是这样安装的吗?

    操作 全允许

  9. 关于sql server 2005存储过程的写法

    打开数据库的SQL Server Managerment Studio---->数据库----->打开数据库会看见"可编程行"------->打开有存储过程--- ...

  10. linux 如何对文件解压或打包压缩

    tar命令用与对文件打包压缩或解压,格式: tar [选项] [文件] 打包并压缩文件: tar -czvf  压缩包名 .tar.gz 解压并展开压缩包: tar -xzvf  压缩包名 .tar. ...