需求:为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. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

  2. 【原】AFNetworking源码阅读(三)

    [原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...

  3. ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)

    操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...

  4. JS实现页面进入、返回定位到具体位置

    最为一个刚入职不久的小白...慢慢磨练吧... JS实现页面返回定位到具体位置 其实浏览器也自带了返回的功能,也就是说,自带了返回定位的功能.正常的跳转,返回确实可以定位,但是有些特殊场景就不适用了. ...

  5. PHP获取上个月最后一天的一个容易忽略的问题

    正常来说,PHP是有一个很方便的函数可以获取上个月时间的 strtotime (PHP 4, PHP 5, PHP 7) strtotime - 将任何英文文本的日期时间描述解析为 Unix 时间戳 ...

  6. [BootStrap] 富编辑器,基于wysihtml5

    在我的周围,已经有很多人在使用BootStrap,但对于任何一个带留言.评论.提问.文章编辑功的网站,编辑器永远是重中之重,显然,早期的编辑器完全没考虑过BootStrap的出现,或皮肤跟网站不匹配, ...

  7. 在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能

    在我上篇随笔<在DevExpress程序中使用Winform分页控件直接录入数据并保存>中介绍了在GridView以及在其封装的分页控件上做数据的直接录入的处理,介绍情况下数据的保存和校验 ...

  8. CSS常见技巧

    一.CSS Sprite(雪碧图|精灵图)指什么? 有什么作用? CSS雪碧 即CSS Sprite,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图像和背景图片合并到一张图片上,然后利 ...

  9. Maven安装

    开发分布式的商场系统,用到了一些新的技术,做一个记录和分享 这里讲一下maven安装 首先什么是Maven Maven作为一个构建工具,不仅帮我们自动化构建,还能抽象构建过程,提供构建任务实现.他跨平 ...

  10. T-SQL 拆分使用指定分隔符的字符串(split string)

    比如有一个表,我们需要些一个语句像SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......' , 然后就能返回分割成单独的行. 原表: | So ...