Android中AlertDilog显示简单和复杂列表的方法
本文实例讲述了Android中AlertDialog显示简单和复杂列表的方法。分享给大家供大家参考,具体如下:
AlertDialog显示简单列表setItems
importAndroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.DialogInterface;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassListDialogTest1extendsActivityimplementsOnClickListener
{
privateButtonbtnListDialog;
privateString[]provinces=newString[]{"上海","北京","湖南","湖北","海南"};
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnListDialog=(Button)findViewById(R.id.btnListDialog);
btnListDialog.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv)
{
switch(v.getId())
{
caseR.id.btnListDialog:
showListDialog();
break;
}
}
privatevoidshowListDialog()
{
AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setTitle("请选择省份");
/**
*1、publicBuildersetItems(intitemsId,finalOnClickListener
*listener)itemsId表示字符串数组的资源ID,该资源指定的数组会显示在列表中。2、publicBuilder
*setItems(CharSequence[]items,finalOnClickListenerlistener)
*items表示用于显示在列表中的字符串数组
*/
builder.setItems(provinces,newDialogInterface.OnClickListener()
{
@Override
publicvoidonClick(DialogInterfacedialog,intwhich)
{
/*
*ad变量用final关键字定义,因为在隐式实现的Runnable接口的run()方法中需要访问final变量。
*/
finalAlertDialogad=newAlertDialog.Builder(
ListDialogTest1.this).setMessage(
"你选择的是:"+which+":"+provinces[which]).show();
Handlerhandler=newHandler();
Runnablerunnable=newRunnable()
{
@Override
publicvoidrun()
{
//调用AlertDialog类的dismiss()方法关闭对话框,也可以调用cancel()方法。
ad.dismiss();
}
};
//5秒后运行run()方法。
handler.postDelayed(runnable,5*1000);
}
});
builder.create().show();
}
}
AlertDialog显示复杂列表setMultiChoiceItems
一、通过AlertDialog.Builder类的setMultiChoiceItems()方法可以创建列表对话框,方法如下:
1、从资源文件中装载数据:
publicBuildersetMultiChoiceItems(intitemsId,boolean[]checkedItems,finalOnMultiChoiceListenerlistener)
2、从数据集中装载数据
publicBuildersetMultiChoiceItems(Cursorcursor,StringisCheckedColumn,StringlabelColumn,finalOnMultiChoiceListenerlistener)
3、从字符串数组中装载数据
publicBuildersetMultiChoiceItems(CharSequence[]items,boolean[]checkedItems,finalOnMultiChoiceListenerlistener)
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.AlertDialog.Builder;
importandroid.content.DialogInterface;
importandroid.content.DialogInterface.OnMultiChoiceClickListener;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.TextView;
publicclassDiaActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
privateButtonbtn;
privateTextViewtv;
privateString[]shuxing={"字体颜色","字体大小"};
privateboolean[]chuzhi={false,false};
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button)findViewById(R.id.button1);
tv=(TextView)findViewById(R.id.textView1);
btn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
Builderb=newAlertDialog.Builder(DiaActivity.this);
b.setTitle("gggggg");
b.setMultiChoiceItems(shuxing,chuzhi,
newDialogInterface.OnMultiChoiceClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,
intwhich,booleanisChecked){
switch(which){
case0:
chuzhi[0]=isChecked;
break;
case1:
chuzhi[1]=isChecked;
break;
default:
break;
}
}
});
b.setPositiveButton("确定",
newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,
intwhich){
if(chuzhi[0]==true){
tv.setTextColor(Color.BLUE);
}
if(chuzhi[1]==true){
tv.setTextSize(50f);
}
}
});
b.create().show();
}
});
}
}
二、通过AlertDialog.Builder类的setSingleChoiceItems方法可以创建带单按钮的列表:方法如下:
1、从资源文件中装载数据:
publicBuildersetSingleChoiceItems(intitemsId,intcheckedItem,finalOnClickListenerlistener)
2、从数据集中装载数据
publicBuildersetSingleChoiceItems(Cursorcursor,intcheckedItem,StringlabelColumn,finalOnClickListenerlistener)
3、从字符串数组中装载数据
publicBuildersetSingleChoiceItems(CharSequence[]items,intcheckedItem,finalOnClickListenerlistener)
4、从ListAdapter对象中装载数据
publicBuildersetSingleChoiceItems(ListAdapteradpater,intcheckedItem,finalOnClickListenerlistener)
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.DialogInterface;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassSingleChoiceItemsTestextendsActivityimplementsOnClickListener
{
privateString[]province=newString[]{"上海","北京","湖南","湖北","海南"};
privateButtonbtnSingleChoiceList;
//单击事件对象的实例
privateButtonOnClickbuttonOnClick=newButtonOnClick(1);
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnSingleChoiceList=(Button)findViewById(R.id.btnSingleChoice);
btnSingleChoiceList.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv)
{
showSingleChoiceButton();
}
//在单选选项中显示确定和取消按钮
//buttonOnClickg变量的数据类型是ButtonOnClick,一个单击事件类
privatevoidshowSingleChoiceButton()
{
AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setTitle("请选择省份");
builder.setSingleChoiceItems(province,0,buttonOnClick);
builder.setPositiveButton("确定",buttonOnClick);
builder.setNegativeButton("取消",buttonOnClick);
builder.show();
}
privateclassButtonOnClickimplementsDialogInterface.OnClickListener
{
privateintindex;//表示选项的索引
publicButtonOnClick(intindex)
{
this.index=index;
}
@Override
publicvoidonClick(DialogInterfacedialog,intwhich)
{
//which表示单击的按钮索引,所有的选项索引都是大于0,按钮索引都是小于0的。
if(which>=0)
{
//如果单击的是列表项,将当前列表项的索引保存在index中。
//如果想单击列表项后关闭对话框,可在此处调用dialog.cancel()
//或是用dialog.dismiss()方法。
index=which;
}
else
{
//用户单击的是【确定】按钮
if(which==DialogInterface.BUTTON_POSITIVE)
{
//显示用户选择的是第几个列表项。
finalAlertDialogad=newAlertDialog.Builder(
SingleChoiceItemsTest.this).setMessage(
"你选择的地区是:"+index+":"+province[index]).show();
//五秒钟后自动关闭。
Handlerhander=newHandler();
Runnablerunnable=newRunnable()
{
@Override
publicvoidrun()
{
ad.dismiss();
}
};
hander.postDelayed(runnable,5*1000);
}
//用户单击的是【取消】按钮
elseif(which==DialogInterface.BUTTON_NEGATIVE)
{
Toast.makeText(SingleChoiceItemsTest.this,"你没有选择任何东西",
Toast.LENGTH_LONG);
}
}
}
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。