Диалог пользовательского списка Android
Привет,
Я работаю над простым файловым браузером. У меня есть большая часть этой настройки (где она перечисляет все в разных каталогах, а что нет), но то, что я застрял прямо сейчас (работал над ним в течение нескольких часов), - это когда элемент списка выбран, я хочу появится диалоговое окно настраиваемого списка. Я нашел этот код на странице разработки Android и немного изменил его. В настоящее время он просто дает тост за то, что было выбрано, но мне нужно, чтобы три элемента были отдельными. То есть, я хотел бы сделать больше, чем тост, и каждый выбор запускает разные команды. Вот мой текущий код
final CharSequence[] items = {"Info", "Rename", "Delete"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Options for " + file.getName());
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
}).show();
Спасибо всем, кто может помочь мне просто отделить его. Я пробовал несколько разных вариантов выражений if, и что не все, что я пробовал, не удалось.
Ответы
Ответ 1
Целое число, которое вы получаете, является индексом массива charsequence, который содержит ваши действия, поэтому, чтобы получить выбранное действие, вы можете сделать это (внутри вашего метода onClick):
if (item == 0)
{
// Info item
}
else if (item == 1)
{
// Rename, and so one
Или вы можете сделать следующее:
if (items[item].equals("Info"))
{
// Info item
}
else if (items[item].equals("Rename")
{
// Rename, and so one
}
Но первый предпочтительный метод
Ответ 2
Немного поздно, но это может помочь.
Я использую его для заполнения пользовательского списка в диалоговом окне.
Я использую курсор, но вы также можете использовать ArrayAdapter или что-то, что вам нравится:
Dialog aDialog = new Dialog(this);
AlertDialog.Builder bDialog = new AlertDialog.Builder(this);
Cursor books = managedQuery(booksprovider.CONTENT_URI_BOOKS, null, null, null, null);
ListView booksToAdd = new ListView(this);
SimpleCursorAdapter books_list = new SimpleCursorAdapter(this, R.layout.shelves_add, books,
new String[] { BOOKS_TITLE, BOOKS_AUTHOR },//columns to include in view
new int[] { R.id.search_results_title, R.id.search_results_author } );//views to bind columns to
booksToAdd.setAdapter(books_list);
bDialog.setView(booksToAdd);
bDialog.setPositiveButton("Add to Shelf", new DialogInterface.OnClickListener() { });
aDialog = bDialog.create();
Ответ 3
AlertDialog.Builder builder = new AlertDialog.Builder(this);
String[] name = new String[] {"item1","item2"};
builder.setItems(name, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which){
case 0:
//click item 1
break;
case 1:
//click item 2
break;
}
}
});
builder.show();
Ответ 4
и вызовите в этом диалоговом окне, в котором вы хотите открыть один диалог выбора.
FragmentManager manager = getFragmentManager();
/** Instantiating the DialogFragment class */
AddTimerDialog alert = new AddTimerDialog();
alert.setPositiveClickListener(this);
/** Creating a bundle object to store the selected item index */
Bundle b = new Bundle();
/** Storing the selected item index in the bundle object */
b.putInt("position", position);
/** Setting the bundle object to the dialog fragment object */
alert.setArguments(b);
/** Creating the dialog fragment object, which will in turn open the alert dialog window */
alert.show(manager, "alert_dialog_radio");
Ответ 5
Я вызываю диалоговое окно в диалоговом окне здесь, это мой код.
Попробуйте следующее:
public class AddTimerDialog extends DialogFragment {
AlertPositiveListener alertPositiveListener;
interface AlertPositiveListener {
public void onPositiveClick(int position);
}
public void setPositiveClickListener(
AlertPositiveListener alertPositiveListener) {
this.alertPositiveListener = alertPositiveListener;
}
OnClickListener positiveListener = new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AlertDialog alert = (AlertDialog) dialog;
int position = alert.getListView().getCheckedItemPosition();
if (alertPositiveListener != null)
alertPositiveListener.onPositiveClick(position);
}
};
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle bundle = getArguments();
int position = bundle.getInt("position");
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setSingleChoiceItems(ReminderSnooze.code, position, null);
b.setPositiveButton("OK", positiveListener);
AlertDialog d = b.create();
return d;
}
}