是否可以在对话框中创建列表视图?

UMA*_*MAR 32 android listview dialog

我已经创建了一个自定义对话框类

public class NewPost extends Dialog
{
// functionality

}
Run Code Online (Sandbox Code Playgroud)

现在我的要求是在里面创建listview.我知道我们可以在其中创建文本框,按钮,下拉列表.

但是为了创建列表视图,我们应该从listActivity类继承我们的类

您建议的是否可能,如果是,那么如何使用任何界面实现这一点或什么?

moo*_*ese 64

此实现不需要您进行任何xml布局.它是作为"onCreateDialog"覆盖中的case语句编写的,但是你可以很容易地适应你的目的:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Color Mode");

ListView modeList = new ListView(this);
String[] stringArray = new String[] { "Bright Mode", "Normal Mode" };
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, stringArray);
modeList.setAdapter(modeAdapter);

builder.setView(modeList);
final Dialog dialog = builder.create();

dialog.show();
Run Code Online (Sandbox Code Playgroud)

因为您只使用ListView创建对话框,所以设置ListView的onItemClickListener,因为没有基本对话框类的onItemClickListener.

modeList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            switch(i) {
                case 0:
                    //do something for first selection
                    break;
                case 1:
                    //do something for second selection
                    break;
            }
            dialog.dismiss();
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 杰夫 - 那是因为ListView.OnItemClickListener没有像DialogInterface.OnMultiChoiceClickListener那样提供对话框参数.将对话框声明为final是应该处理的,并允许您在覆盖中访问对话框.心连心. (3认同)

Gau*_*ish 51

是.

您始终可以在Dialog中使用ListView.而且你肯定不一定需要ListActivity来创建ListView.

代码可能是这样的:

Dialog dlg = new Dialog(context);
LayoutInflater li = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.my_layout, null, false);
dlg.setContentView(v);
dlg.show();
Run Code Online (Sandbox Code Playgroud)

my_layout.xml:

<ScrollView xmlns:android="blah"
   android:id="xid"
   android:layout_height="h"
   android:layout_width="w">

  <ListView blah blah blah attributes
  />

 </ScrollView>
Run Code Online (Sandbox Code Playgroud)

  • 总的来说好主意,但[建议不要在scrollView中放置listView](http://stackoverflow.com/questions/6210895/listview-inside-scrollview-is-not-scrolling-on-android). (57认同)
  • `ListView v =(ListView)dlg.findViewById(R.id.list_view_in_your_my_layout);`然后创建一个适配器并设置适配器. (5认同)
  • 你会如何填充对话框中的列表? (2认同)

Dav*_*und 11

你不是真的要延长listActivity,以便使用列表视图.

扩展listActivity将为您提供免费的一些功能,例如getListView()(如果我正确地记住方法名称),但也可以findViewById()像任何其他视图一样手动完成.


kon*_*mik 5

最简单的方法:

    ListView listView = new ListView(this);
    listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[] {"item 1", "item 2", "item 3"}));
    Dialog dialog = new Dialog(this);
    dialog.setContentView(listView);
    dialog.show();
Run Code Online (Sandbox Code Playgroud)