安卓自定义列表对话框

16

你好,
我正在开发一个简单的文件浏览器应用程序。我已经设置了大部分内容(列出不同目录中的所有内容等),但现在遇到困难(已经花费了几个小时)。当选择列表项时,我想要出现一个自定义列表对话框。我找到了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语句和其他东西,但我尝试过的一切都失败了。

5个回答

11

你收到的item integer是包含你的操作的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
}

但第一种方法更受 prefered。


非常感谢,我已经很接近了。我使用的代码看起来与第二个代码非常相似,但是我使用的不是"Info"和"Rename",而是0和1,所以我混合了两种代码。无论如何,非常感谢,它完美地工作了。 - user577732

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();

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");

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();

-1
我正在调用对话框,这是我的代码...
尝试这个:
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;
       }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接