Android 用于dinamic列表视图的带ArrayAdapter的AlertDialog

Android 用于dinamic列表视图的带ArrayAdapter的AlertDialog,android,listview,android-arrayadapter,android-alertdialog,Android,Listview,Android Arrayadapter,Android Alertdialog,我想生成一个包含ListView的AlertDialog。 通过搜索,我发现更好的方法是使用ArrayAdapter 我尝试了整个网络,但它就是不起作用。下面的代码没有做一些重要的事情,因为我不知道如何继续 我必须更新listView或适配器吗?在哪里? 下面是我在按下按钮时调用的方法(ps.usingonbuttonclick(View)) private void showAlertDialog() { ListView ListView=新建ListView(此); ArrayAdapte

我想生成一个包含ListView的AlertDialog。 通过搜索,我发现更好的方法是使用ArrayAdapter

我尝试了整个网络,但它就是不起作用。下面的代码没有做一些重要的事情,因为我不知道如何继续

我必须更新listView或适配器吗?在哪里?

下面是我在按下按钮时调用的方法(ps.usingonbuttonclick(View))

private void showAlertDialog()
{
ListView ListView=新建ListView(此);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(这是android.R.layout.select_dialog_项);
arrayAdapter.添加(“a”);
arrayAdapter.添加(“b”);
arrayAdapter.添加(“c”);
setAdapter(arrayAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView arg0,视图,整数位置,长id)
{
Toast.makeText(getApplicationContext(),“在索引处单击的项目”+pos,Toast.LENGTH\u SHORT).show();
//这里我调用一个方法来更新listView?
}
});
AlertDialog.Builder dialogBuilder=新建AlertDialog.Builder(此);
setTitle(“我的对话框”);
dialogBuilder.setView(listView);
dialogBuilder.setPositiveButton(“确定”,null);//TODO
dialogBuilder.setNegativeButton(“Cancel”,null);//没有任何内容可以简单地忽略
AlertDialog=dialogBuilder.show();
dialog.show();
}

您必须创建自定义对话框类

像这样

public class CustomDialog extends Dialog {

    private ListView listView;

    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_custom_dialog);
      listView=findViewById(R.id.listview);


    }
}
在onCreate方法中,可以放置具有listview的新布局


您可以像前面提到的那样制作listview内容。

首先,您需要为AlertDialog创建一个自定义布局

dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
dialog.xml
-像这样创建自定义警报对话框

public void createCustomDialog(Context context, String title) {
        View dialogView = View.inflate(context,R.layout.dialog, null);
        ListView lv= (ListView) dialogView.findViewById(R.id.listview);
        lv.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, new String[] {"Item 1", "Item 2", "Item 3"}));
        AlertDialog.Builder builder = new AlertDialog.Builder(context)
                                        .setTitle(title)
                                        .setView(dialogView)
                                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                // TODO do something
                                            }
                                        })
                                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                //TODO do something
                                            }
                                        });
        builder.create().show();

    }
public void createCustomDialog(上下文,字符串标题){
视图对话框视图=视图.充气(上下文,R.layout.dialog,null);
ListView lv=(ListView)dialogView.findViewById(R.id.ListView);
lv.setAdapter(新的ArrayAdapter(context,android.R.layout.simple_list_item_1,新字符串[]{“item 1”、“item 2”、“item 3”);
AlertDialog.Builder=新建AlertDialog.Builder(上下文)
.setTitle(标题)
.setView(dialogView)
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
//做点什么
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface dialog,int which){
//做点什么
}
});
builder.create().show();
}

希望这有帮助

也许我没有很好地定义这个问题。。。当我点击一个项目时,我需要修改列表中的数据。你想修改哪些数据?a、b和c。
public void createCustomDialog(Context context, String title) {
        View dialogView = View.inflate(context,R.layout.dialog, null);
        ListView lv= (ListView) dialogView.findViewById(R.id.listview);
        lv.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, new String[] {"Item 1", "Item 2", "Item 3"}));
        AlertDialog.Builder builder = new AlertDialog.Builder(context)
                                        .setTitle(title)
                                        .setView(dialogView)
                                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                // TODO do something
                                            }
                                        })
                                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                //TODO do something
                                            }
                                        });
        builder.create().show();

    }