2

我的应用程序是这样工作的:有一个带有不同按钮(“Category 1”、“Category 2”等)的菜单,所有这些按钮都打开了同一个名为“ResultListViewActivity”的活动,它显示了一个包含数据库内容的 ListView,取决于您之前单击的按钮。

因此,有一个活动显示了一个内容不同的列表视图。我正在尝试为此列表视图添加“过滤模式”。我有一个“过滤器按钮”打开一个警报对话框窗口,这个警报对话框里面有一个微调器。我正在研究一种在此微调器中显示不同内容的方法,然后为每个项目分配不同的侦听器。例如,如果在主菜单上单击“Category 1”按钮,它会将变量“filterVariable”设置为值 1,如果单击“Category 2”,它将设置为值 2,依此类推。
我用 switch 属性编写了这个,但它使我的应用程序因指针空异常而崩溃。这是我的代码:

 OnClickListener filter_listener = new OnClickListener() {

    @Override
    public void onClick(View v) {

        LayoutInflater li = LayoutInflater.from(context);
        View dialogView = li.inflate(R.layout.alertdialog_filter, null);

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                context);

        Bundle bundle = getIntent().getExtras();
        int filterVariable = bundle.getInt("filterVariable");

        switch (filterVariable) {

      // if you click on button "category 1" in main menu
        case 1: 
            ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(ResultListViewActivity.this, R.array.spinner_category1, R.id.alertdialog_spinner);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);

            break;
      // if you click on button "category 2" in main menu        
        case 12: 
            ArrayAdapter<?> adapter1 = ArrayAdapter.createFromResource(ResultListViewActivity.this, R.array.spinner_category2, R.id.alertdialog_spinner);
            adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter1);

            break;

        }

        alertDialogBuilder.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });


        alertDialogBuilder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // Lorsque l'on cliquera sur annuler on quittera
                        // l'application
                        finish();
                    }
                });

        // set alertdialog_filter.xml to alertdialog builder
        alertDialogBuilder.setView(dialogView);

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();
    }
}; }

这真的让我发疯,我已经设法在弹出菜单的情况下做到了(我的代码在这里供那些可能感兴趣的人使用:如何为不同的弹出菜单设置特定的侦听器?(内部代码))但现在不是弹出菜单不再是微调器,一切都不同了,我为弹出菜单所做的一切都没用。

4

0 回答 0