Android中AlertDilog显示简单和复杂列表的方法

 更新时间:2016年08月17日 09:07:32   作者:llyofdream  
这篇文章主要介绍了Android中AlertDialog显示简单和复杂列表的方法,结合实例形式分析了Android的AlertDialog创建列表显示对话框的相关方法与常见操作技巧,需要的朋友可以参考下

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • 详解Flutter WebView与JS互相调用简易指南

    详解Flutter WebView与JS互相调用简易指南

    这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • Android开发App启动流程与消息机制详解

    Android开发App启动流程与消息机制详解

    这篇文章主要为大家介绍了Android开发App启动流程与消息机制详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • android下拉刷新ListView的介绍和实现代码

    android下拉刷新ListView的介绍和实现代码

    在当下,列表组件不带下拉刷新的都不好意思叫列表。第一次完成列表的下拉刷新功能的时候,直接在Activity中实现,虽然功能上是实现了,总体上感觉很乱。所以第二次用到的时候,就想着封装成一个组件,实现和Activity的解耦。
    2013-04-04
  • Android实现3D翻转动画效果

    Android实现3D翻转动画效果

    这篇文章主要为大家详细介绍了Android实现3D翻转动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android 通过API获取数据库中的图片文件方式

    Android 通过API获取数据库中的图片文件方式

    这篇文章主要介绍了Android 通过API获取数据库中的图片文件方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android 如何获取传感器的数据方法详解

    Android 如何获取传感器的数据方法详解

    这篇文章主要介绍了Android 如何获取传感器的数据,传感器 Sensor 是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求
    2022-07-07
  • android实现NFC读写功能

    android实现NFC读写功能

    这篇文章主要为大家详细介绍了android实现NFC读写功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Android 调用发送短信的方法

    Android 调用发送短信的方法

    这篇文章主要介绍了Android 调用发送短信的方法的相关资料,主要实现Android 调用短信的使用,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • 详解Android中Intent传递对象给Activity的方法

    详解Android中Intent传递对象给Activity的方法

    这篇文章主要介绍了Android中Intent传递对象给Activity的方法,文章中对Activity的生命周期等知识先作了简要的介绍,需要的朋友可以参考下
    2016-04-04
  • Android列表控件Spinner简单用法示例

    Android列表控件Spinner简单用法示例

    这篇文章主要介绍了Android列表控件Spinner简单用法,结合实例形式分析了Android列表控件Spinner的布局与功能实现技巧,需要的朋友可以参考下
    2017-12-12

最新评论