Возможно ли создать диалоговое окно listview внутри?

Я создал собственный диалоговый класс

public class NewPost extends Dialog { // functionality } 

Теперь мое требование – создать в нем список. Я знаю, что мы можем создавать текстовые поля, кнопки, раскрывающийся список внутри него.

Но чтобы создать представление списка, мы должны наследовать наш класс из класса listActivity

Что вы предлагаете, возможно ли это или нет, если да, то как достичь этого с помощью какого-либо интерфейса или что?

Вам не нужно расширять listActivity , чтобы использовать listviews.

Расширение listActivity предоставит вам некоторые функции бесплатно, например getListView() (если я правильно getListView() имя метода), но это также можно сделать вручную с findViewById() как и любое другое представление.

Эта реализация не требует от вас каких-либо макетов xml. Он был написан как аргумент case в переопределении onCreateDialog, но вы можете адаптироваться, если для ваших целей очень легко:

 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(); 

Да.

Вы всегда можете использовать 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(); 

my_layout.xml:

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

Самый простой способ:

  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(); 

Вы можете создать настраиваемый диалог с этим макетом:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal" android:background="@drawable/dialogs"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="20dip" android:paddingRight="20dip" android:paddingTop="10dip"> <ImageView android:id="@+id/dialog_title_image" android:layout_alignParentLeft="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/info"/> <TextView android:id="@+id/dialog_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:layout_marginTop="20dp" android:layout_centerInParent="true" android:text="Title" android:layout_toRightOf="@id/dialog_title_image" android:textColor="@android:color/black" android:textSize="20sp"/> <!-- Lista --> </RelativeLayout> <TextView android:layout_width="fill_parent" android:layout_height="3dip" android:background="#1e90ff"/> <ListView android:id="@+id/component_list" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!-- Fine lista --> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="10dip" android:paddingLeft="10dp" android:paddingRight="10dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:gravity="bottom|center_horizontal" android:paddingBottom="20dip"> <Button android:id="@+id/positive_button" android:layout_alignParentLeft="true" android:layout_width="120dip" android:layout_height="wrap_content" android:background="#1e90ff" android:textColor="@android:color/white" android:text="@string/close"/> </RelativeLayout> </LinearLayout> 

Создайте собственный макет также для каждого элемента, если хотите:

 <?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:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="10dp" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textStyle="bold" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/subtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall" /> </LinearLayout> 

А затем используйте arraylist, чтобы заполнить список и установить представление:

  //creation and population of the list List<Component> my_list = new ArrayList<Component>(); createComponents(); //adapter array_adapter = new ComponentAdapter(context, R.layout.component,my_list); //button to show the dialog Button button = (Button)findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub list_dialog = new Dialog(context); list_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); list_dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); list_dialog.setContentView(R.layout.list_dialog); ListView list = (ListView)list_dialog.findViewById(R.id.component_list); list.setAdapter(array_adapter); Button positiveButton = (Button) list_dialog.findViewById(R.id.positive_button); positiveButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { list_dialog.dismiss(); } }); list_dialog.show(); } }); } 

Ссылки: http://pillsfromtheweb.blogspot.it/2014/10/android-listview-inside-alertdialog.html#links

Результат: Введите описание изображения здесь

Вы можете использовать любой макет для диалоговых окон оповещений. Если вы хотите просмотреть список, я бы сделал это как здесь