AndroidのAlertDilogsは簡単で複雑なリストを表示する方法です。


この例は、AndroidにおけるAlertDialogが簡単で複雑なリストを表示する方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
Alert Dialogは簡単なリスト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は複雑なリストsetMulti ChoiceItemsを表示します。
一、AlertDialog.BuiderクラスのsetMulti ChoiceItems()方法によりリストダイアログを作成することができます。方法は以下の通りです。
1、リソースファイルからデータを読み込みます。
public Buider set Multi Choic Items(int items、bootlean[]checedItems、final OnMulti Choic Listener listener)
2、データセットからデータをロードする
public Buider setMulti Choic Items(Curor cursor、Strigis CheckedColumn、String label Column、final OnMulti Choic Listenerlistener)
3、文字列配列からデータをロードする
public Buider set Multi Choic Items(CharSequence[]items、bootlean[]checedItems、final OnMulti Choic Listener 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.Bulder類のsetSingleChoiceItems方法により、シングルボタン付きリストを作成することができます。方法は以下の通りです。
1、リソースファイルからデータを読み込みます。
public Buider setSingleChoicItems(int items Id、intch eckedItem、final OClistener listener)
2、データセットからデータをロードする
public Buider setSingleChoicItems(Curor cursor、intch eckedItem、String label Column、final OnClikListenerlistener)
3、文字列配列からデータをロードする
public Buider setSingle ChoicceItems(CharSequence[]items、intch eckedItem、final OnClistener listener)
4、ListAdapterオブジェクトからデータをロードする
public Buider setSingle ChoicItems(ListAdapter adpater、intch eckedItem、final OClistener 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プログラムの設計に役に立ちます。