您的位置:首页 > 其它

显示选择省份的三种列表对话框-列表对话框,单选列表对话框,多选列表对话框

2015-06-07 11:32 375 查看

简单列表对话框

通过AlertDialog.Builder类的setItems方法可以创建简单列表对话框,这种对话框相当于ListView控件放在了对话框中,然后在ListView中添加若干简单的文本。setItems方法的定义如下:

public Builder setItems( int itemsId, final OnClickListener listener);

public Builder setItems( CharSequence[] items, final OnClickListener listener);


itemsId可以是字符串数组资源ID或者字符串数组变量,或值的方式

单选列表对话框

通过AlertDialog.Builder类的setSingleChoiceItems方法可以创建单选列表对话框

`public Builder setSingleChoiceItems( int itemsId, int checkedItem, final OnClickListener listener);

//从资源文件中装载

public Builder setSingleChoiceItems( CharSequence[] items, int checkedItem,final OnClickListener listener);

//从字符串数组中装载

public Builder setSingleChoiceItems( Cursor cursor,int checkedItem,String labelColumn,final OnClickListener listener);

//从数据集中装载,数据集中某一列会作为列表对话框的数据加载到列表框中。该参数表示该列的名称(字段名称)

`public Builder setSingleChoiceItems( ListAdapter adapter, int checkedItem,final OnClickListener listener);

//从ListAdapter中装载

多选列表对话框

通过AlertDialog.Builder类的setMultiChoiceItems方法可以创建多选列表对话框

`

1. public Builder setMultiChoiceItems(int itemId, boolean[] checkedItems, final OnMultiChoiceClickListener listener);

//从资源文件中装载

2. public Builder setMultiChoiceItems(Cursor cursor, String isCheckedColumn, String labelColumn ,final OnMultiChoiceClickListener listener);

//从数据集中装载

3. public Builder setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, final OnMultiChoiceClickListener listener);

//isCheckedColumn确定列表项是否被选中,“1” 表示选中,“0”表示未选中。

`

main.Java
package net.blogjava.mobile;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;

public class Main extends Activity implements OnClickListener
{
private String[] provinces = new String[]
{ "辽宁省", "安徽省", "河北省", "福建省", "广东省", "黑龙江省" };
//列表对话框的字符串数组资源
private ButtonOnClick buttonOnClick = new ButtonOnClick(1);
//单击事件类的对象实例
private ListView lv = null;
//用于保存多选列表对话框中的ListView对象
private void showListDialog() //用于显示简单列表对话框
{
new AlertDialog.Builder(this).setTitle("选择省份").setItems(provinces,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
**final** AlertDialog ad = new AlertDialog.Builder(
Main.this).setMessage(
"您已经选择了: " + which + ":" + provinces[which])
.show();
android.os.Handler hander = new android.os.Handler(); // 设置定时器,5秒后调用run方法
hander.postDelayed(new Runnable()
{
@Override
public void run()
{
ad.dismiss();//调用AlertDialog类的dismiss方法,也可以写成cancel方法。ad变量要用final的,因为在隐式实现的Runnable接口的run方法中需要访问final变量

}
}, 5 * 1000);

}
}).show();
}

private void showSingleChoiceDialog()// 用于显示单选列表对话框
{

new AlertDialog.Builder(this).setTitle("选择省份").setSingleChoiceItems(
provinces, 1, buttonOnClick).setPositiveButton("确定",
buttonOnClick).setNegativeButton("取消", buttonOnClick).show();

}

@SuppressLint("NewApi")
private void showMultiChoiceDialog()
{

AlertDialog ad = new AlertDialog.Builder(this)
.setIcon(R.drawable.image).setTitle("选择省份")
.setMultiChoiceItems(provinces, new boolean[]
{ false, true, false, true, false, false },
//第三个参数必须指定单击事件对象,不能设置为null
new DialogInterface.OnMultiChoiceClickListener()
{
public void onClick(DialogInterface dialog,
int whichButton, boolean isChecked)
{

}
}).setPositiveButton("确定",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,
int whichButton)
{
int count = lv.getCount();
String s = "您选择了:";
for (int i = 0; i < provinces.length; i++)
{

if (lv.getCheckedItemPositions().get(i))
s += i + ":"
+ lv.getAdapter().getItem(i)
+ "  ";

}
//用户至少选择了一个列表项
if (lv.getCheckedItemPositions().size() > 0)
{
new AlertDialog.Builder(Main.this)
.setMessage(s).show();
}
else
{
new AlertDialog.Builder(Main.this)
.setMessage("您未选择任何省份").show();

}

}
}).setNegativeButton("取消", null).create();
lv = ad.getListView();
ad.show();

}

private class ButtonOnClick implements DialogInterface.OnClickListener
{
private int index;

public ButtonOnClick(int index)
{
this.index = index;
}

@Override
public void onClick(DialogInterface dialog, int whichButton)
{
//whichButton表示单击的按钮索引,所有列表项的索引都是大于等于0的,然而按钮的索引都是<0的!
if (whichButton >= 0)
{
index = whichButton; //单击的是列表项
// dialog.cancel();
}
else
{
if (whichButton == DialogInterface.BUTTON_POSITIVE)
{ //单击确定按钮
new AlertDialog.Builder(Main.this).setMessage(
"您已经选择了: " + index + ":" + provinces[index]).show();
}
else if (whichButton == DialogInterface.BUTTON_NEGATIVE)
{
new AlertDialog.Builder(Main.this).setMessage("您什么都未选择.")
.show();

}
}

}

}

@Override
public void onClick(View view)
{
switch (view.getId())
{
case R.id.btnListDialog:
{
showListDialog();
break;
}
case R.id.btnSingleChoiceDialog:
{
showSingleChoiceDialog();
break;
}
case R.id.btnMultiChoiceDialog:
{
showMultiChoiceDialog();
break;
}
}
}

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnListDialog = (Button) findViewById(R.id.btnListDialog);
Button btnSingleChoiceDialog = (Button) findViewById(R.id.btnSingleChoiceDialog);
Button btnMultiChoiceDialog = (Button) findViewById(R.id.btnMultiChoiceDialog);
btnListDialog.setOnClickListener(this);
btnSingleChoiceDialog.setOnClickListener(this);
btnMultiChoiceDialog.setOnClickListener(this);
}
}
xml文件
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/btnListDialog" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="显示列表对话框" />
<Button android:id="@+id/btnSingleChoiceDialog" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="显示单选列表对话框" />
<Button android:id="@+id/btnMultiChoiceDialog" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="显示多选列表对话框" />
</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对话框