ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Android Studio : 複数選択ダイアログ
日時: 2015/09/25 21:36
名前: lightbox






拡張子:
package sample.lightbox.checkboxdialog1;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Log.i("lightbox", "クリックされました");

				String[] list_data = {"大阪", "東京", "名古屋", "岡山"};
				final boolean[] list_flg = {false, false, false, false};

				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				builder.setTitle("回転するとリセット");

				builder.setMultiChoiceItems(list_data, list_flg, null);

				builder.setNegativeButton("キャンセル", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						Log.i("lightbox", "キャンセルされました");

					}
				});
				builder.setPositiveButton("選択完了", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						Log.i("lightbox", "選択されました");

						SparseBooleanArray sba = ((AlertDialog) dialog).getListView().getCheckedItemPositions();
						Log.i("lightbox", sba.size() + "");
						// 選択された行の処理
						for (int i = 0; i < sba.size(); i++) {
							
							int idx_data = sba.keyAt(i);
							String target = ((AlertDialog) dialog).getListView().getAdapter().getItem(idx_data).toString();
							Log.i("lightbox", target + "(" + idx_data + ")");

						}

					}
				});
				builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
					@Override
					public void onCancel(DialogInterface dialog) {
						Log.i("lightbox", "キャンセルされました2");

					}
				});

				builder.setCancelable(true);
				builder.create().show();

			}
		});

	}


}
メンテナンス

Android Studio : 複数選択ダイアログ( DialogFragment ) ( No.1 )
日時: 2015/09/26 23:47
名前: lightbox


日時: 2015/09/26 23:47
名前: lightbox



(1) キャンセル不可
(2) 配列をリソースから
拡張子:
package sample.lightbox.checkboxdialog2;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Log.i("lightbox", "クリックされました");

				MyDialogFragment dialog = new MyDialogFragment();
				dialog.setCancelable(false);
				dialog.show(getFragmentManager(), "dialog");

			}
		});

	}

	public static class MyDialogFragment extends DialogFragment {
		@Override
		public Dialog onCreateDialog(Bundle savedInstanceState) {

			String[] list_data = getResources().getStringArray(R.array.list_01);
			boolean[] list_flg = {false, false, false, false};

			AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
			builder.setTitle("回転可能なダイアログ");

			builder.setMultiChoiceItems(list_data, list_flg, null);

			builder.setNegativeButton("キャンセル", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					Log.i("lightbox", "キャンセルされました");

				}
			});

			builder.setPositiveButton("選択完了", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					Log.i("lightbox", "選択されました");

					SparseBooleanArray sba = ((AlertDialog) dialog).getListView().getCheckedItemPositions();
					Log.i("lightbox", sba.size() + "");
					for (int i = 0; i < sba.size(); i++) {
						int idx_data = sba.keyAt(i);
						String target = ((AlertDialog) dialog).getListView().getAdapter().getItem(idx_data).toString();
						Log.i("lightbox", target);

					}

				}
			});

			return builder.create();
		}
	}
}
strings.xml
拡張子:
<resources>
    <string name="app_name">CheckBoxDialog2</string>

    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

    <string-array name="list_01">
        <item>大阪</item>
        <item>東京</item>
        <item>名古屋</item>
        <item>岡山</item>
    </string-array>

</resources>
このアーティクルの参照用URLをクリップボードにコピー メンテナンス