您好,
我正在开发一个简单的文件浏览器应用程序。我已经设置了大部分内容(它列出了不同目录中的所有内容以及不同的内容)但是我现在所处理的内容(工作几个小时)是选择列表项时,我想要出现一个自定义列表对话框。我在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语句的一些不同变体,但是我尝试过的所有内容都失败了。
答案 0 :(得分:11)
您收到的项目整数是包含您的操作的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
}
但第一种方法是首选的
答案 1 :(得分:1)
有点晚,但这可能会有所帮助。 我正在使用它来填充对话框中的自定义列表。 我正在使用光标,但您也可以使用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();
答案 2 :(得分:0)
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();
答案 3 :(得分:0)
并调用该对话框,您想打开一个选择对话框。 FragmentManager manager = getFragmentManager();
/** Instantiating the DialogFragment class */
AddTimerDialog alert = new AddTimerDialog();
alert.setPositiveClickListener(this);
/** Creating a bundle object to store the selected item's index */
Bundle b = new Bundle();
/** Storing the selected item's 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");
答案 4 :(得分:-1)
我在Dialog中调用Dialog框这里是我的代码..
试试这个:
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;
}
}