ListViewの項目選択に応じたDialogを表示
自分用メモ
ゴリゴリ・ゴリラ押しソースコード
スマートな書き方ができなかったので、どなたか教えてください。
マジでコード書くより調べる時間が長い
///// Main.java DialogFragment dialogFragment = new CustomDialog(); ///// final String[] strings = {"abc","cde","edf"}; final ArrayAdapter<String> adapter = new ArrayAdapter<>(mContext, android.R.layout.simple_list_item_1, strings); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Bundle arg = new Bundle(); //////////// Bundle is used switch (position){ case 0: arg.putInt("num",0); dialogFragment.setArguments(arg); ////////// setArguments で Bundleに入れた値を渡す。 break; case 1: arg.putInt("num",1); dialogFragment.setArguments(arg); break; case 2: arg.putInt("num",2); dialogFragment.setArguments(arg); break; } dialogFragment.show(getFragmentManager(), "test"); }
///// CustomDialog public class CustomDialog extends DialogFragment { ////省略 public Dialog onCreateDialog(Bundle savedInstanceState) { int number = 0; try { number = getArguments().getInt("num"); ///setArgumentsしたのを受け取るやつらしい そりゃそうだね。 } catch (NullPointerException ex) { Log.e("JJI", ex.toString()); } if (number == 1) { return new AlertDialog.Builder(getActivity()) .setTitle("UNKO") .setMessage("UNKO") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mListener.onDialogPositiveClick(D_Fragment.this); } }) .setNeutralButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create(); ////////////// 省略 if(number == 2 )とか if(number == 3)もあるよ }
こんな感じ?