AlertDialog中使用ListView绑定数据

在实际工作过程中,单单使用AlertDialog的单选功能不一定能满足我们的需求,需要绑定数据到 listview

1. 自定义Layout

LayoutInflater factory = LayoutInflater.from(DialogActivity.this);final View view = factory.inflate(R.layout.linerlayout, null);

2,构造数据
List<Map<String, String>> nameList = new ArrayList<Map<String, String>>();//建立一个数组存储listview上显示的数据for (int m = 0; m < 15; m++) {//initData为一个list类型的数据源    Map<String, String> nameMap = new HashMap<String, String>();    nameMap.put("name", "name"+m);    nameMap.put("id", m+"");    nameList.add(nameMap);}

3ListView数据绑定
listView= (ListView) view.findViewById(R.id.lv_list);

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
SimpleAdapter adapter = new SimpleAdapter(DialogActivity.this,        nameList, R.layout.item,        new String[] { "name","id" },        new int[] { R.id.tv1 ,R.id.tv2});listView.setAdapter(adapter);

4.AlertDialog 绑定
  final AlertDialog dialog = new AlertDialog.Builder(this)                .setTitle("选择姓名").setView(view)//在这里把写好的这个listview的布局加载dialog中                .setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override                    public void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub                        dialog.cancel();                    }                }).create();        dialog.setCanceledOnTouchOutside(false);//使除了dialog以外的地方不能被点击        dialog.show();
5. LIstview 点击事件
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {//响应listview中的item的点击事件

            @Override            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,                                    long arg3) {                Log.d("TAG","ok");// TODO Auto-generated method stub                TextView btn = (TextView) arg1 .findViewById(R.id.tv2);//取得每条item中的textview控件             //   et_name.setText(tv.getText().toString());

                Log.d("TAG",btn.getText().toString());               // dialog.cancel();            }        });
 
时间: 2024-11-08 10:57:53

AlertDialog中使用ListView绑定数据的相关文章

使用Adapter实现listview绑定数据,getView()方法未执行原因

目前在做一个社交功能,在原布局文件中添加listview并绑定到自定义的adapter(继承自BaseAdapter)发现未达到期望效果,调试发现未进入getView()方法: 不科学啊!!分明调用了adapter的notifyDataSetChanged()方法,然后就应该进入getView()啊... 在网上查资料,原因总结为三种:1.getCount()返回的size为0,因此不会执行: 2.布局文件的问题.(这类问题应该不能统一,各种布局问题都可能导致getView不运行): 3.线程问

xamarin.android listview绑定数据及点击事件

前言 listview是用来显示数据列表的一个控件,今天给大家带来如何使用cursor进行数据绑定以及点击事件. 导读 1.如何创建一个listview 2.如何使用cursor进行绑定数据 3.listview的点击事件 正文 1.如何创建一个listview 这里我们自定义一个listview的视图,首先打开Main.axml,拖一个listview放进去. 右击Layout新建一个视图,名为UserListItemLayout.axml,拖两个textview进去,如图 这样我们就完成了一

使用AlertDialog中的视图绑定时遇到的异常

在创建自定义对话框时,我们会给这个对话框设置一个View dialog = new AlertDialog.Builder(this).setView(layout).create(); 但是当我们需要复用这个layout视图的时候,如果不做处理直接把layout设置到其他控件会出现异常,原因是作为子视图的layout只能归属于某一个父元素.要想复用,必须在父元素中移除layout ViewGroup Vparent = (ViewGroup) layout.getParent(); if(Vp

【WinForm】线程中向listview添加数据

在使用listview的时候,因为处理的数据较多,为防止在处理数据时出现假死的状态出现卡的情况,我们使用委托进行处理添加数据 定义委托 private delegate void AddListView(ListViewItem item); 定义添加数据的方法 /// <summary> /// /// </summary> /// <param name="item"></param> private void AddListView

WPF中为ListView动态绑定数据(可参考)

GridView gv = new GridView(); DataTable dt = fieldManageBLL.GetFieldManage(moduleName); for(int i=0;i<dt.Rows.Count;i++) {     if(i==0)     {         GridViewColumn gvc=new GridViewColumn();         CheckBox cb = new CheckBox();         cb.Checked +=

Android train——ListView绑定ArrayAdapter、SimpleAdapter、SimpleCursorAdapter、BaseAdapter

ListView绑定ArrayAdapter res/layout/activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout

使用自定的Adapter绑定ListView/GridView数据

使用自定的Adapter绑定ListView/GridView数据(地址) 对于ListView/Gridview的数据绑定, google提供了一些Adapter的模板, 自己也可以自定义一些个性化的显示样式,这样自定义一个Adapter并不复杂,本文自定义了一个显示两行Text的Adapter,使用这个Adapter为ListView绑定数据. 首先,创建一个有两个TextView组成的Layout - TwoRowLayout.axml,这个文件就相当于ListView中一个项目模板. 源

关于angularJS绑定数据时自动转义html标签

折磨了两天,最后发现答案竟如此简单,不过辛苦还是值得的,毕竟为了弄明白这一点又学习了更多代码. angularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签中的注入攻击,但有些时候还是需要的,特别是从数据库读取带格式的文本时,无法正常的显示在页面中. 而要对html进行转义,则要在数据绑定的html标签中使用ng-bind-html属性,该属性依赖与$sanitize,也就是需要引入angular-saniti

关于angularJS绑定数据时自动转义html标签(转载-漆黑的小白)

原文:http://okashii.lofter.com/post/1cba87e8_29e0fabangularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签中的注入攻击,但有些时候还是需要的,特别是从数据库读取带格式的文本时,无法正常的显示在页面中. 而要对html进行转义,则要在数据绑定的html标签中使用ng-bind-html属性,该属性依赖与$sanitize,也就是需要引入angular-sani