Пользовательское диалоговое окно Listview для Android

Мне удалось создать собственное диалоговое окно списка на основе ответов на этот вопрос Stackoverflow. диалог-в-андроиде">как-отобразить-просмотр-списка-в-предупреждении-диалог-в-андроиде

Вот изображение моего пользовательского списка диалогов. введите здесь описание изображения

У меня возникла проблема, как мне получить пользовательский ввод, если пользователь выбирает «Редактировать сообщение» / «Удалить сообщение» соответственно? Существует ли OnClickListener для диалога и как мне его реализовать? Спасибо :)


person Arvind Dinivra    schedule 07.06.2014    source источник


Ответы (3)


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

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginRight="100dp"
    android:layout_gravity="right">

<TextView
    android:id="@+id/edit"
    android:layout_width="wrap_content"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:paddingRight="120dp"
    android:paddingLeft="10dp"
    android:gravity="center"
    android:clickable="true"
    android:layout_height="wrap_content"
    android:textColor="@color/white"
    android:background="@drawable/selector_option_menu"
    android:text="EditPost"/>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/white"
    />

<TextView
    android:id="@+id/delete"
    android:layout_width="wrap_content"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:paddingRight="120dp"
    android:paddingLeft="10dp"
    android:gravity="center"
    android:clickable="true"
    android:textColor="@color/white"
    android:background="@drawable/selector_option_menu"
    android:layout_height="wrap_content"
    android:text="Delete Post"/>
</LinearLayout>

Создайте пользовательский класс диалога, который расширяет класс диалога следующим образом, и привяжите прослушиватель onclick в onCreate() mehtod:

public class MyDialog extends Dialog {

Context context;
public MyDialog(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    this.context = context;
}
public MyDialog(Context context, int theme){
    super(context, theme);
    this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.dialog);

    findViewById(R.id.edit).setOnClickListener(...);
    findViewById(R.id.delte).setOnClickListener(...);
}
}

надеюсь, это поможет.

person Weibo    schedule 07.06.2014

Вы всегда можете использовать контекстное меню, которое делает то же самое.

Прежде всего зарегистрируйте слушателя в вашем ListView:

registerForContextMenu(myListView);

Настройте параметры контекстного меню:

       @Override  
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu, v, menuInfo);  
    if (v==myLIstView)
    {
        menu.setHeaderTitle("Optional title");
        menu.add(0, v.getId(), 0,"Edit post"); 
        menu.add(0, v.getId(), 0,"Delete post");
    }


    }

Захватите и сделайте что-нибудь с результатом:

    @Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    long num= info.id;
    if(item.getTitle()=="Edit post")
    {
        edit a post
    }
    else if(item.getTitle()=="Delete post"){
        delete a post
    }

    }
    return super.onContextItemSelected(item);
}
person Ivan Wooll    schedule 07.06.2014

person    schedule
comment
Спасибо за помощь, мне удалось решить мою проблему с помощью вашего ответа, и после успешного щелчка любого элемента в диалоговом окне CustomListView я попытался закрыть диалоговое окно, в котором теперь все работает отлично: D! - person Arvind Dinivra; 08.06.2014