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



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

    环境:mono

    效果:

     

     布局代码

       主布局

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="vertical"
     4     android:layout_width="fill_parent"
     5     android:layout_height="fill_parent">
     6     <ListView
     7         android:id="@+id/myList"
     8         android:layout_width="fill_parent"
     9         android:layout_height="fill_parent" />
    10 </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

     1 using System;
     2 
     3 using Android.App;
     4 using Android.Content;
     5 using Android.Runtime;
     6 using Android.Views;
     7 using Android.Widget;
     8 using Android.OS;
     9 using System.Collections.Generic;
    10 
    11 namespace ListViewItemBtnClick
    12 {
    13     [Activity(Label = "ListViewItemBtnClick", MainLauncher = true, Icon = "@drawable/icon")]
    14     public class Activity1 : Activity
    15     {
    16         ListView listView;
    17 
    18         protected override void OnCreate(Bundle bundle)
    19         {
    20             base.OnCreate(bundle);
    21 
    22             SetContentView(Resource.Layout.Main);
    23 
    24 
    25             listView = FindViewById<ListView>(Resource.Id.myList);
    26 
    27          
    28             //填充Listview
    29             getList(listView);
    30 
    31 
    32 
    33         }
    34         
    35         //获取Listview
    36         private void getList(ListView listview)
    37         {
    38 
    39             Adapter goodsAdapter = new Adapter(this);
    40             List<Item> itemList = new List<Item>();
    41             Item item = new Item();
    42 
    43             //给Item赋值 并且添加到list里面
    44             for (int i = 0; i <10; i++)
    45             {
    46                 item.title = i + "|标题|";
    47                 item.button = i + "btn";
    48                 itemList.Add(item);
    49             }
    50             //给adapter中添加list的值
    51             foreach (Item item1 in itemList)
    52             {
    53                 goodsAdapter.Add(item1);
    54             }
    55             //将adapter的值付给listview
    56             listview.Adapter = goodsAdapter;
    57         }
    58 
    59     }
    60 }
    MainActivity

    Item类

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

    Adapter配置数据

     1 namespace ListViewItemBtnClick
     2 {
     3     class Adapter:ArrayAdapter<Item>,View.IOnClickListener
     4     {
     5 
     6         private Context context;
     7 
     8         public Adapter(Context context):base(context,0){
     9             //通过构造函数获取context
    10             this.context = context;
    11         
    12         }
    13          
    14 
    15 
    16 
    17 
    18         public override View GetView(int position, View convertView, ViewGroup parent)
    19         {
    20             View view;
    21             //如果convertView不为空则直接使用
    22             if (convertView!=null)
    23             {
    24                 view = convertView;
    25 
    26             }
    27 
    28             else
    29             {
    30                 view = LayoutInflater.From(this.Context).Inflate(Resource.Layout.ListItem, null);
    31 
    32             }
    33 
    34             //设置title的值
    35             TextView title = view.FindViewById<TextView>(Resource.Id.txt);
    36             Button btn = view.FindViewById<Button>(Resource.Id.btn);
    37 
    38             Item item = GetItem(position);
    39 
    40             title.Text = item.title + position;
    41             //给每个按钮添加一个tag tag的值为position 或者自定义的ID
    42             btn.SetTag(Resource.Id.btn,position);
    43             btn.Text ="--"+ position+"---";
    44             //注册事件
    45             btn.SetOnClickListener(this);
    46             return view;
    47         }
    48 
    49         
    50 
    51         public void OnClick(View v)
    52         {
    53             //获得点击的按钮
    54             Button btn = v as Button;
    55             //获得tag
    56             int id =  Convert.ToInt32(btn.GetTag(btn.Id));
    57 
    58             Intent it = new Android.Content.Intent();
    59 
    60             it.SetClass(context,typeof(Activity2));
    61             it.PutExtra("pos", id);
    62             //注意!启动新Activity
    63             context.StartActivity(it);
    64         }
    65     }
    66 }
    Adapter


    在其他地方显示数据

    1  string PosValue = Intent.GetStringExtra("pos");
    2             
    3 
    4             Toast.MakeText(this, PosValue.ToString(), ToastLength.Long).Show();
    View Code

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

    http://yishids.taobao.com

     

  • 相关阅读:
    Python模块、包、异常、文件(案例)
    jQuery DataTable 删除数据后重新加载
    Python|面向对象
    python开发的学生管理系统
    使用JDK开发WebServrice案例
    Python入门(案例)
    Spring总结以及在面试中的一些问题
    Web Services简单介绍
    Canvas实现文字粒子化,并且绕轴旋转(完善)
    HTML5 Canvas画数字时钟
  • 原文地址:https://www.cnblogs.com/zhahainie/p/3573528.html
Copyright © 2020-2023  润新知