Android自定义列表对话框

时间:2011-03-09 18:58:28

标签: android list dialog file-browser

您好,
我正在开发一个简单的文件浏览器应用程序。我已经设置了大部分内容(它列出了不同目录中的所有内容以及不同的内容)但是我现在所处理的内容(工作几个小时)是选择列表项时,我想要出现一个自定义列表对话框。我在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 个答案:

答案 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;
       }
    }