我想在android中添加三个对话框列表

时间:2015-05-13 13:23:45

标签: android

我正在尝试在按钮单击

上的一个对话框中添加三个列表视图
      //Prepare ListView in dialog
      dialog_ListView = (ListView)dialog.findViewById(R.id.dialoglist);
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listContent);
      // custom adapter on listView in android
      CustomListviewAdapter adapter2 = new CustomListviewAdapter(MainActivity.this, listContent);
      dialog_ListView.setAdapter(adapter);

      dialog_ListView1=(ListView)dialog.findViewById(R.id.dialoglist1);
      ArrayAdapter<String> arrayadapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listContent2);
      CustomListviewAdapter adapter3=new CustomListviewAdapter(MainActivity.this,listContent2);
      dialog_ListView1.setAdapter(arrayadapter);

      dialog_ListView2=(ListView)dialog.findViewById(R.id.dialoglist2);
      ArrayAdapter<String> arrayadapter1=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listContent3);
      CustomListviewAdapter adapter4=new CustomListviewAdapter(MainActivity.this,listContent3);
      dialog_ListView2.setAdapter(arrayadapter1);

2 个答案:

答案 0 :(得分:0)

您必须制作自定义xml布局,例如dialog_lists.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:id="@+id/first"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_weight="1" />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:id="@+id/second"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_weight="1" />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:id="@+id/third"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="46dp"
        android:layout_weight="1" />
</LinearLayout>

如上所示,将所有3个列表视图放在其中,然后使用以下命令初始化对话框:

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    View parent = getLayoutInflater().inflate(R.layout.dialog_lists,null);
    ListView first = (ListView)parent.findViewById(R.id.first);
    ListView second = (ListView)parent.findViewById(R.id.second);
    ListView third = (ListView)parent.findViewById(R.id.third);

    first.setAdapter(...);
    second.setAdapter(...);
    third.setAdapter(...);

    builder.setView(parent);
    builder.setNeutralButton("Close", null);
    builder.create().show();

注意:我必须补充一点,这将是一个糟糕的设计选择,特别是当我在一个小屏幕上想象这样的对话框时。

答案 1 :(得分:0)

您想要在一行或一列中排列三个ListView吗? 如果你想在列中排列它们,我建议你可以使用ExanpandableListView。 否则你可以接受以前的建议,但你最好做一些这样的改变:     

<ListView
    *android:layout_height="match_parent"
    android:layout_width="0dp"*
    android:id="@+id/first"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_weight="1" />

<ListView
    *android:layout_height="match_parent"
    android:layout_width="0dp"*
    android:id="@+id/second"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_weight="1" />

<ListView
    *android:layout_height="match_parent"
    android:layout_width="0dp"*
    android:id="@+id/third"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_marginRight="46dp"
    android:layout_weight="1" />

Beacase match_parent的值优于ListView

中的其他值