mar*_*lar 13 android android-alertdialog
在我的应用程序中,用户可以使用不同的标准选择要下载的文章.其中一个是年月.为此,我想要一个带有年份列表的AlertDialog.如果用户点击一年,该列表将展开并显示1月,2月等.
我知道如何使用SimpleExpandableListAdapter 创建可扩展的列表视图,但这不是我想要的.由于其他标准(例如类别)也列出AlertDialogs,我想要一些外观和感觉相似的东西.
是否有可能完成这样的可扩展列表AlertDialog?
解
基于CommonsWare的解决方案,这就是我最终的结果:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select something");
ExpandableListView myList = new ExpandableListView(this);
MyExpandableListAdapter myAdapter = new MyExpandableListAdapter();
myList.setAdapter(myAdapter);
builder.setView(myList);
AlertDialog dialog = builder.create();
dialog.show();
Run Code Online (Sandbox Code Playgroud)
仅剩下问题:如何为AlertDialog实现onClick侦听器?通常我会在setItems()方法中执行此操作,但不使用setItems.
我在myList.setAdapter()之后添加了myList.setOnItemClickListener,但它被忽略了.单击某个项目时没有任何反应:
myList.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
try {
Toast.makeText(ExpandableList1.this, "You clicked me", Toast.LENGTH_LONG).show();
}
catch(Exception e) {
System.out.println("something wrong here ");
}
}
});
Run Code Online (Sandbox Code Playgroud)
点击问题的解决方案:
解决方案非常简单.由于它是可扩展列表,因此列表本身会捕获项目单击以打开子元素.因此,永远不会调用事件处理程序.
相反,你必须实现OnChildClickListener() - 顾名思义 - 监听子点击!
Com*_*are 10
使用setView()上AlertDialog.Builder,通过在ExpandableListView你充气或在Java代码中创建并已设置你的适配器上.
| 归档时间: |
|
| 查看次数: |
6087 次 |
| 最近记录: |