2014-01-22 4 views
1

Я существующий ListView, и когда я долго щелкните элемент Я хотел бы видеть этот вид диалога:Как создать диалог стиля «Список»?

enter image description here

На данный момент я использую простой диалог Android с горизонтальными кнопками.

Есть ли простой способ реализовать это поведение и вернуть результат пользователя (т. Е. Пользователь нажал «Изменить» или «Удалить»), или мне нужно снова создать активность ListView? Снимок экрана из другого приложения, и я действительно не знаю, как автор выполнил это.

Любой образец кода будет высоко оценен :)


Я нашел это: Styling Text in a Dialog List

и Это: http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList

, а также это от @ user3218281 (в комментариях) : Create a Context Menu when Click Long in a Custom ListView

+1

Я ответил на это полчаса назад. -> [здесь] (http://stackoverflow.com/questions/21283636/create-an-context-menu-when-click-long-in-a-custom-listview/21283838#21283838) <- – user3218281

+0

Я чувствовал что user3218281 ответ полезен ... вот почему я удалил ... –

+0

@GopalRao, действительно полезно. Он получил +1 от меня. – ZigiZ

ответ

3

это может быть он lp you ...

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    ArrayList<String> arrayList = new ArrayList<String>(); 
    arrayList.add("Edit"); 
    arrayList.add("Delete"); 
    arrayList.add("Cancel"); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); 
    DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      switch (which) { 
      case 0: 
       // Edit Clicked 
       break; 
      case 1: 
       // Delete clicked 
       break; 
      case 2: 
       // Cancel clicked 
       break; 
      default: 
       break; 
      } 
     } 
    }; 
    builder.setAdapter(adapter, listener); 
    builder.show(); 
+0

короткий и простой! спасибо :) – ZigiZ

+0

У меня есть два вопроса: не должно быть '.create()' before' builder.show'? то есть 'builder.create(). show();'. Кроме того, можно ли добавить дополнительное сообщение под заголовком с этим макетом? builder.setTitle работает, но добавление builder.setMessage делает список не отображаемым. – ZigiZ

+2

@ZigiZ внутренне метод 'show()' будет вызывать метод 'create()' ... и создавать LinearLayout с ориентацией как вертикальной и добавлять в него два TextView. сначала для показа заголовка и второго TextView для отображения сообщения. и установите этот LinearLayout как пользовательский заголовок View, используя 'builder.setCustomTitle (LinearLayout);' –

Смежные вопросы