使用适配器做列表内容的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();
}
}