私のアプリケーションはこのように動作します: 異なるボタン ("Category 1"、"Category 2" など) を持つメニューがあり、これらすべてのボタンは "ResultListViewActivity" と呼ばれる同じアクティビティを開き、データベースからのコンテンツを含む ListView を表示します。前にクリックしたボタンによって異なります。
そのため、内容が異なるリストビューを表示する 1 つのアクティビティがあります。このリスト ビューに「フィルター モード」を追加しようとしています。アラートダイアログウィンドウを開く「フィルターボタン」があります。このアラートダイアログにはスピナーがあります。このスピナーにさまざまなコンテンツを表示し、各アイテムにさまざまなリスナーを割り当てる方法に取り組んでいます。たとえば、メイン メニューで [Category 1] ボタンをクリックすると、変数 "filterVariable" が値 1 に設定され、[Category 2] をクリックすると値 2 に設定されます。
スイッチ属性を使用してこれを記述しましたが、ポインター null 例外でアプリがクラッシュします。これが私のコードです:
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();
}
}; }
それは本当に私を夢中にさせます、私はポップアップメニューの場合にそれを行うことができました(興味があるかもしれない人のために私のコードはここにあります:さまざまなポップアップメニューに特定のリスナーを設定する方法は?(コード内))しかし今はそうではありませんポップアップメニューはもうスピナーですが、すべてが異なり、ポップアップメニューに対して行ったことは役に立ちません。