0

我在片段中有一个按钮,当我单击时,我需要打开一个包含列表视图项的对话框,但我无法打开包含列表项的对话框

 final ListView lv = (ListView) view.findViewById(R.id.mylist);
button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {        

                   Dialog dialog = new Dialog(getActivity());
                   dialog.setContentView(R.layout.list_view);
                   dialog.setTitle("Custom Dialog");

                   ArrayAdapter<String> selectedAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_view,R.id.text, event);
                   selectedAdapter.setNotifyOnChange(true);                  
                   lv.setAdapter(selectedAdapter);
                   dialog.show();                
                }        
            });

我的列表视图

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
<TextView
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical|center_horizontal"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="#FFFFFF" />

         <ListView
            android:id="@+id/mylist"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:divider="#b5b5b5"
            android:dividerHeight="5dp" />
     </LinearLayout>

任何帮助表示赞赏。

4

2 回答 2

4

添加dialog.show()使其出现在屏幕上!

编辑:

好的,问题是您在创建对话框之前找到了列表视图。因此,lv不是对任何对象的有效引用。

findViewById在设置内容视图之前移动:

button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {        

               Dialog dialog = new Dialog(getActivity());
               dialog.setContentView(R.layout.list_view);
               ListView lv = (ListView) dialog.findViewById(R.id.mylist);
               dialog.setTitle("Custom Dialog");

               ArrayAdapter<String> selectedAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_view,R.id.text, event);
               selectedAdapter.setNotifyOnChange(true);                  
               lv.setAdapter(selectedAdapter);
               dialog.show();                
            }        
        });
于 2013-08-13T06:38:26.823 回答
2

像这样初始化 ListView。

button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {        
                   Dialog dialog = new Dialog(getActivity());
                   dialog.setContentView(R.layout.list_view);
                   dialog.setTitle("Custom Dialog");
                   ListView lv = (ListView) dialog.findViewById(R.id.mylist); 
                   ArrayAdapter<String> selectedAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, event);
                   selectedAdapter.setNotifyOnChange(true);                  
                   lv.setAdapter(selectedAdapter);
                   dialog.show();                
                }        
            });

编辑:您有一个自定义对话框。list_view您有一个带有 textview 和 listview的布局。因此,要初始化列表视图,您应该使用对话框对象来初始化列表视图

与初始化 textview 类似

    TextView tv = (TextView)dialog.findViewById(R.id.text);
于 2013-08-13T07:01:52.210 回答