Android Dialog

使用适配器的做列表内容的AlertDialog

  使用适配器做列表内容的AlertDialog可以使用的列表内容在程序运行时动态改变,主要使用ArrayAdapter对象来提供数据列表内容即可。

案例



package com.hzj163.myalertdialogadapter;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    TextView t1;
    //Dialog对象
    AlertDialog alertDialog;
    //选项数据对象
    ArrayList<String> datas;
    //选项适配器
    ArrayAdapter arrayAdapter;
    //dialog按钮事件
    DialogInterface.OnClickListener onClickListenerButton;
    //dialog选项事件
    DialogInterface.OnClickListener onClickListenerItem;
    //当前选项状态
    int selectIndex = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        t1 = (TextView) findViewById(R.id.t1);
        //初始化选项数据对象的数据
        datas = new ArrayList();
        datas.add("吃饭");
        datas.add("上网");
        datas.add("睡觉");
        datas.add("LoL");
        //初始化选项适配器【这里使用了ListAdapter的子类ArrayAdapter】
        //context - 上下文
        //resource - 选项的样式,这里可以使用android已经做好的样式android.R.layout.select_dialog_singlechoice
        //objects - 数据集合【需要List集合】
        arrayAdapter = new ArrayAdapter(this, android.R.layout.select_dialog_singlechoice, datas);
        onClickListenerButton = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (which) {
                    case AlertDialog.BUTTON_POSITIVE:
                        //返回数据给t1文本
                        setT1Info();
                        break;
                    case AlertDialog.BUTTON_NEGATIVE:
                        dialog.dismiss();
                        break;
                }
            }
        };

        onClickListenerItem = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //获取当前选中的项
                selectIndex = which;
            }
        };

    }

    private void setT1Info() {
        //直接从集合里面取出选中的项
        t1.setText(datas.get(selectIndex));
    }
    //添加点选项
    public void btn2(View view) {
        //添加集合数据
        datas.add("魔兽世界");
        //刷新适配器
        arrayAdapter.notifyDataSetChanged();
        Toast.makeText(this, "添加完毕", Toast.LENGTH_LONG).show();
    }

    //打开dialog
    public void btn1(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("选项dialog");
        builder.setSingleChoiceItems(arrayAdapter, selectIndex, onClickListenerItem);
        builder.setPositiveButton("确定", onClickListenerButton);
        builder.setNegativeButton("取消", onClickListenerButton);
        alertDialog = builder.create();
        alertDialog.show();
    }


}