DialogFragment(ListViewを使った複数選択)

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

DialogFragmentとListViewを使って複数選択ダイアログを使う 重要なことは下記の通り
  • android.R.layout.simple_list_item_multiple_choiceを使う
  • ListViewで”multipleChoice”を設定する。
DialogFragmentのJavaコード
public class MultiSelectDialog extends DialogFragment {
    private CustomAdapter adapter;
    public static MultiSelectDialog newInstance(int title) {
        MultiSelectDialog frag = new MultiSelectDialog();
        Bundle args = new Bundle();
        args.putInt("title", title);
        frag.setArguments(args);
        return frag;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.hoge , null);
        ArrayList<string> itemList = new ArrayList<string>();
        adapter = new CustomAdapter(getActivity(), 0, itemList);
        ListView listView = (ListView)view.findViewById(R.id.list);
        listView.setAdapter(adapter);
        return new AlertDialog.Builder(getActivity())
            .setTitle("一覧")
            .setView(view)
            .setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                    }
                })
            .setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                    }
                })
            .create();
    }

    // ListViewで使用するadapter
    public class CustomAdapter extends ArrayAdapter<parseobject> {
        private LayoutInflater inflater;

        public CustomAdapter(Context context, int resource, List<strings> objects) {
            super(context, resource, objects);
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public View getView(int position, View v, final ViewGroup parent) {
            String item = getItem(position);
            if (null == v) {
                //Androidデフォルトのリソースを利用する。
                v = inflater.inflate(android.R.layout.simple_list_item_multiple_choice, null);
            }
            TextView intTextView = (TextView) v.findViewById(android.R.id.text1);
            intTextView.setText(item);
            return v;
        }
    }
}
レイアウトファイル
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
    <ListView
    android:id="@+id/skill_name_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:choiceMode="multipleChoice"
    android:fastScrollEnabled="true" />
</LinearLayout>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)