-1

Я хочу создать AlertDialog, который содержит ListView. Поиск, я обнаружил, что лучший способ сделать это - с помощью ArrayAdapter.AlertDialog с ArrayAdapter для динамического ListView

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

Я должен обновить списокView или адаптер? Где?

Вот метод, который я вызываю при нажатии кнопки (ps. С помощью onButtonClick (Вид)).

private void showAlertDialog() 
{ 
    ListView listView = new ListView(this); 

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item); 
    arrayAdapter.add("a"); 
    arrayAdapter.add("b"); 
    arrayAdapter.add("c"); 

    listView.setAdapter(arrayAdapter); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> arg0, View view, int pos, long id) 
     { 
      Toast.makeText(getApplicationContext(), "item clicked at index " + pos, Toast.LENGTH_SHORT).show(); 
      // Here I call a method to update listView? 
     } 
    }); 

    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); 
    dialogBuilder.setTitle("My Dialog"); 

    dialogBuilder.setView(listView); 

    dialogBuilder.setPositiveButton("OK", null); // TODO 
    dialogBuilder.setNegativeButton("Cancel", null); // nothing simply dismiss 

    AlertDialog dialog = dialogBuilder.show(); 
    dialog.show(); 
} 

ответ

0

Вы должны создать пользовательский класс Dialog.

Нравится это.

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.

И вы можете сделать содержимое списка, как в вопросе.

+0

Но как я могу вставлять данные и обновлять их? –

0

Прежде всего, необходимо создать пользовательский макет для 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" /> 

-Создания персонализированного оповещения диалога как этого

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

    } 

Надеется, что это помощь!

+0

Возможно, я не очень хорошо определил проблему ... Мне нужно изменить данные списка, когда я нажимаю на элемент. –

+0

Какие данные вы хотите изменить? – ResolutioN

+0

«a», «b» и «c». –