加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Android基础教程:促进AlertDialog通用化的另一种达成方式

发布时间:2021-11-24 20:50:42 所属栏目:教程 来源:互联网
导读:final CharSequence[] items = {Red, Green, Blue}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(Pick a color); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterfac
final CharSequence[] items = {"Red", "Green", "Blue"};  
  
AlertDialog.Builder builder = new AlertDialog.Builder(this);  
builder.setTitle("Pick a color");  
builder.setItems(items, new DialogInterface.OnClickListener() {  
    public void onClick(DialogInterface dialog, int item) {  
        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();  
    }  
});  
AlertDialog alert = builder.create();  
参照这段代码可以很简单的构建自己的包含列表的对话框。但是有一点小小的遗憾,就是在setItems中设定的DialogInterface.OnClickListener的onClick中取得选中项目的时候,利用了onClick的参数和尾部的items的信息。作为例子当然没有问题,但是如果想将这部分代码通用的时候就会有困难,解决办法应该有很多,这里向大家推荐以下的方法。
 
先上代码
 
AlertDialog createAlertDialog(final int dialog_id, CharSequence[] items, OnItemClickListener listener){  
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);  
        builder.setTitle(dialog_id);  
        builder.setItems(items, null);  
        builder.setOnCancelListener(new DialogInterface.OnCancelListener() {  
        @Override  
        public void onCancel(DialogInterface dialog) {  
                activity.removeDialog(dialog_id);  
        }  
    });  
    AlertDialog dialog =  builder.create();  
    dialog.getListView().setOnItemClickListener(listener);  
    return dialog;  
}  
主要的变化就是没有直接使用AlertDialog.Buider的setItems中Listener,而是取得ListView后指定OnItemClickListener。它的声明如下:
 
void onItemClick(AdapterView<?> parent, View view, int position, long id)
 
参数中有ListView的信息,因此可以相对简单的中自身,而不是外部取得信息。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读