Как сделать так, чтобы этот DialogBox всплывал при щелчке элемента списка?

1

У меня есть задание, где я должен реализовать собственную систему переадресации вызовов и искал способы сделать это. Я решил, что Androids, владеющий переадресацией вызовов, выглядел великолепно и решил, что я хочу пригласить пользователя на элемент, щелкнув по списку. В основном, я хочу, чтобы это появилось, когда пользователь нажимает на элемент.

Изображение 174551

Здесь код, в котором я пытаюсь реализовать диалоговое окно:

public class CallForwardActivity extends ListActivity 
{
String[] settingsLabels = {"Viderestillinger", "Altid", "Optaget", "Ingen svar", "Timeout"};
int position;
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  ListView lv = getListView();
  lv.setTextFilterEnabled(true);
  setListAdapter(new ArrayAdapter<String>(this, R.layout.callforward_items, R.id.callforward_item_text, settingsLabels));

  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) 
    {
        // Open Dialog Box with an edittext view for setting the correct number to Call forward
        myTextDialog().show() // ???
    }
  });
}


private Dialog myTextDialog() {
    final View layout = View.inflate(this, R.layout.custom_dialog, null);

    final EditText savedText = ((EditText) layout.findViewById(R.id.myEditText));

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setIcon(0);

    builder.setPositiveButton("Save", new Dialog.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
           String myTextString = savedText.getText().toString().trim();
        }
    });
    builder.setView(layout);
    return builder.create();
 }

Как мне "вызвать" этот метод/показать диалог?

Теги:
dialog

2 ответа

1
Лучший ответ

Используйте его таким образом, чтобы объявить диалог,

final AlertDialog.Builder builder = new AlertDialog.Builder(context);
                         builder.setView(//your view)
                           .setPositiveButton("Update", new DialogInterface.OnClickListener() {
                            public void onClick(final DialogInterface dialog, final int id) {
                                //update click
                            }
                           })
                           .setNeutralButton("Disable", new DialogInterface.OnClickListener() {
                                public void onClick(final DialogInterface dialog, final int id) {
                                    //disable click
                                }
                               })
                           .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                public void onClick(final DialogInterface dialog, final int id) {
                                //cancel click
                                }
                               });

И покажите это в своем прослушивателе кликов следующим образом:

builder.show();

В функции builder.setView() вам нужно передать для нее представление (например, макет), состоящее из textview и edittext и кнопки, если вы хотите сделать его таким же, как на рисунке.

1

Если вы хотите создать свой собственный диалог (например, в onItemClickListener), то AlertDialog.Builder - это хорошее место для начала. Например:

  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) 
    {
        new AlertDialog.Builder(view.getContext())
            .setMessage("Something here")
            .setNegativeButton("Close", null).show();

    }
  });

Вы можете посмотреть документы для AlertDialog здесь: http://developer.android.com/reference/android/app/AlertDialog.Builder.html

  • 0
    Так что я нашел этот метод, который, кажется, примерно делает то, что я хочу. Пожалуйста, смотрите мое редактирование :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню