Android中AlertDilog显示简单和复杂列表的方法
作者:llyofdream 发布时间:2022-11-22 16:32:35
本文实例讲述了Android中AlertDialog显示简单和复杂列表的方法。分享给大家供大家参考,具体如下:
AlertDialog 显示简单列表 setItems
import Android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ListDialogTest1extends Activityimplements OnClickListener
{
private Button btnListDialog;
private String[] provinces =new String[] { "上海", "北京", "湖南", "湖北", "海南" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnListDialog = (Button) findViewById(R.id.btnListDialog);
btnListDialog.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btnListDialog:
showListDialog();
break;
}
}
private void showListDialog()
{
AlertDialog.Builder builder =new AlertDialog.Builder(this);
builder.setTitle("请选择省份");
/**
* 1、public Builder setItems(int itemsId, final OnClickListener
* listener) itemsId表示字符串数组的资源ID,该资源指定的数组会显示在列表中。 2、public Builder
* setItems(CharSequence[] items, final OnClickListener listener)
* items表示用于显示在列表中的字符串数组
*/
builder.setItems(provinces, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,int which)
{
/*
* ad变量用final关键字定义,因为在隐式实现的Runnable接口 的run()方法中 需要访问final变量。
*/
final AlertDialog ad =new AlertDialog.Builder(
ListDialogTest1.this).setMessage(
"你选择的是:" + which + ": " + provinces[which]).show();
Handler handler = new Handler();
Runnable runnable = new Runnable()
{
@Override
public void run()
{
// 调用AlertDialog类的dismiss()方法关闭对话框,也可以调用cancel()方法。
ad.dismiss();
}
};
// 5秒后运行run()方法。
handler.postDelayed(runnable, 5 * 1000);
}
});
builder.create().show();
}
}
AlertDialog 显示复杂列表 setMultiChoiceItems
一、通过AlertDialog.Builder类的setMultiChoiceItems()方法可以创建列表对话框,方法如下:
1、 从资源文件中装载数据:
public Builder setMultiChoiceItems(int itemsId, boolean[]checkedItems, final OnMultiChoiceListener listener)
2、从数据集中装载数据
public Builder setMultiChoiceItems(Cursor cursor, StringisCheckedColumn, String labelColumn, final OnMultiChoiceListenerlistener)
3、从字符串数组中装载数据
public Builder setMultiChoiceItems(CharSequence[] items,boolean[] checkedItems, final OnMultiChoiceListener listener)
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class DiaActivity extends Activity {
/** Called when the activity is first created. */
private Button btn;
private TextView tv;
private String[] shuxing = { "字体颜色", "字体大小" };
private boolean[] chuzhi = { false, false };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
tv = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Builder b = new AlertDialog.Builder(DiaActivity.this);
b.setTitle("gggggg");
b.setMultiChoiceItems(shuxing, chuzhi,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
switch (which) {
case 0:
chuzhi[0] = isChecked;
break;
case 1:
chuzhi[1] = isChecked;
break;
default:
break;
}
}
});
b.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
if (chuzhi[0] == true) {
tv.setTextColor(Color.BLUE);
}
if (chuzhi[1] == true) {
tv.setTextSize(50f);
}
}
});
b.create().show();
}
});
}
}
二、通过AlertDialog.Builder类的setSingleChoiceItems方法可以创建带单按钮的列表:方法如下:
1、从资源文件中装载数据:
public Builder setSingleChoiceItems(int itemsId, intcheckedItem, final OnClickListener listener)
2、从数据集中装载数据
public Builder setSingleChoiceItems(Cursor cursor, intcheckedItem, String labelColumn, final OnClickListenerlistener)
3、从字符串数组中装载数据
public Builder setSingleChoiceItems(CharSequence[] items, intcheckedItem, final OnClickListener listener)
4、从ListAdapter对象中装载数据
public Builder setSingleChoiceItems(ListAdapter adpater, intcheckedItem, final OnClickListener listener)
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class SingleChoiceItemsTest extends Activityimplements OnClickListener
{
private String[] province = new String[] { "上海", "北京", "湖南", "湖北", "海南" };
private Button btnSingleChoiceList;
// 单击事件对象的实例
private ButtonOnClick buttonOnClick = new ButtonOnClick(1);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnSingleChoiceList = (Button) findViewById(R.id.btnSingleChoice);
btnSingleChoiceList.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
showSingleChoiceButton();
}
// 在单选选项中显示 确定和取消按钮
//buttonOnClickg变量的数据类型是ButtonOnClick,一个单击事件类
private void showSingleChoiceButton()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请选择省份");
builder.setSingleChoiceItems(province, 0, buttonOnClick);
builder.setPositiveButton("确定", buttonOnClick);
builder.setNegativeButton("取消", buttonOnClick);
builder.show();
}
private class ButtonOnClick implements DialogInterface.OnClickListener
{
private int index; // 表示选项的索引
public ButtonOnClick(int index)
{
this.index = index;
}
@Override
public void onClick(DialogInterface dialog,int which)
{
// which表示单击的按钮索引,所有的选项索引都是大于0,按钮索引都是小于0的。
if (which >= 0)
{
//如果单击的是列表项,将当前列表项的索引保存在index中。
//如果想单击列表项后关闭对话框,可在此处调用dialog.cancel()
//或是用dialog.dismiss()方法。
index = which;
}
else
{
//用户单击的是【确定】按钮
if (which == DialogInterface.BUTTON_POSITIVE)
{
//显示用户选择的是第几个列表项。
final AlertDialog ad = new AlertDialog.Builder(
SingleChoiceItemsTest.this).setMessage(
"你选择的地区是:" + index + ":" + province[index]).show();
//五秒钟后自动关闭。
Handler hander = new Handler();
Runnable runnable = new Runnable()
{
@Override
public void run()
{
ad.dismiss();
}
};
hander.postDelayed(runnable, 5 * 1000);
}
//用户单击的是【取消】按钮
else if (which == DialogInterface.BUTTON_NEGATIVE)
{
Toast.makeText(SingleChoiceItemsTest.this, "你没有选择任何东西",
Toast.LENGTH_LONG);
}
}
}
}
}
希望本文所述对大家Android程序设计有所帮助。


猜你喜欢
- C# 获取某个时间的0点0分和23点59分59秒,具体代码如下所示:C#获取当月第一天和最后一天当月第一天0时0分0秒:DateTime.N
- 如何使用exe4j把jar打包成exe文件最近,做了几个javafx的项目,想要把jar包打成exe的可执行软件,下面时我使用exe4j打包
- 这篇文章主要介绍了JDK线程池和Spring线程池的使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 本文实例为大家分享了Java NIO实现多人聊天室的具体代码,供大家参考,具体内容如下1. 服务器端代码ChatServer类:packag
- 前言Spring 提供了 ApplicationContext 事件机制,可以发布和监听事件,这个特性非常有用。Spring 内置了一些事件
- 概述ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是
- @Async注解如何实现方法异步处理大批量数据的时候,效率很慢。所以考虑一下使用多线程。刚开始自己手写的一套,用了线程池启动固定的线程数进行
- 其实可以理解Handler为主线程和另外的线程之间进行数据更新的东东,并且Handler在主线程中,并在Handler直接调用线程的run方
- ViewStub可以在运行时动态的添加布局。帮助文档给定的定义是:"A ViewStub is an invisible, zer
- 区别一如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂。通俗来讲——MyBatis:一种操作数据库
- 1.运行程序时, AddOrEditBook1.BooksType = GetTypeName(model.BookType_ID); 出现
- 首先,在main方法的类上添加注解:@ServletComponentScan(basePackages = "applicati
- 要实现摇一摇的功能,类似于微信的摇一摇方法1:通过分析加速计数据来判断是否进行了摇一摇操作(比较复杂)方法2:iOS自带的Shake监控AP
- 1. SpringBoot ResponseBody 返回值中null值处理@PostMapping(path = "/test&
- LottieLottie 是 Airbnb 开源的一个动画项目,它支持 iOS, mac OS Android RN,由于某些复杂动画的实现
- 本文实例讲述了Java后台线程操作。分享给大家供大家参考,具体如下:一 点睛有一种线程,它是后面运行的,它的任务是为其他线程提供服务,这种线
- 原因:给定的流不支持mark和reset就会报这个错误。获取到一个网络流,这个网络流不允许读写头来回移动,也就不允许mark/reset机制
- 迪杰斯特拉算法迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算
- 一.线程不安全多线程的执行环境中,程序的执行结果和预期的结果不符合,这就称为发生了线程不安全现象二.那些情况导致了线程不安全?大致分为以下5
- 下面还有投票,帮忙投个票👍前言最近在看某个开源项目代码并准备参与其中,代码过了一遍后发现多个自定义的配置文件用来装载业务配置代替数据库查询,