惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
U
Unit 42
Y
Y Combinator Blog
I
InfoQ
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
量子位
Microsoft Security Blog
Microsoft Security Blog
B
Blog
The Cloudflare Blog
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
C
Check Point Blog
S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
T
Tailwind CSS Blog

博客园 - meetweb

IDEA 使用generator逆向工程生成pojo,mapper Ambiguous reference to member 'dataTask(with:completionHandle:)'错误 swift3.0  代码创建经典界面的九宫图--优化篇 swift3.0 创建经典界面的九宫图 bootstrap table教程--后台数据绑定、特殊列处理、排序 bootstrap table教程--使用入门基本用法 jqGrid使用json实现的范例一 android logger的使用 通过反射获取DLL的类实现加载窗体 Visual 2015创建新项,缺少ADO.NET 实体数据模型的解决方法 在VisualStadio2015上使用EF6.0建立MySql数据库 事件使用(转 ) 使用Dotfuscator 进行.Net代码混淆 代码加密的方法 Git分布式版本控制系统学习笔记 免费SVN服务器笔记 如何设置mysql远程访问及防火墙设置 c# GridControl怎么换行 模拟Post登陆带验证码的网站 c#控制打印机杂项
AlertDialog中使用ListView绑定数据
meetweb · 2017-07-24 · via 博客园 - meetweb

在实际工作过程中,单单使用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();
}
});