AlertDilog 顯示簡單 和 複雜列表

來源:互聯網
上載者:User


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);

              }

           }

       }

    }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.