09 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 11

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【Java】ツリー構造のListViewみたいなものを作成してみた_続き 

今週も花金がやってきましたね!大坂です。
花金とか死語ですか?そうですか?そうですね。

では先週書いたツリー構造のListViewの続きで、チェックボックスの値の取得(?)方法について。

簡単に言ってしまうと、チェックボックスをクリックするたびに
「SparseBooleanArray」のデータ入れ替えるだけなんですけども。

前回コードを基本に抜粋して説明していきます。

クラス変数に「SparseBooleanArray」とキーに使う「int」変数を準備し、
チェックボックス作成後、「ID」と「SparseBooleanArray」に
「false」を設定(チェック入りが初期値の場合、「true」を設定)
では、コードです。
 // フィールド変数
SparseBooleanArray checkboxArray = new SparseBooleanArray();
int childCheckId = 0;

public void setGropuView(String group, String[] groupChild) {
/** 省略 */

// チェックボックスの作成
final CheckBox childCheck = new CheckBox(this);
// IDの設定
 childCheck.setId(childCheckId);
// SparseBooleanArrayにfalseを設定
checkboxArray.put(childCheckId, false);
// 次のループ用に「childCheckId」をインクリメント
childCheckId++
}

これでループ毎にそれぞれのチェックボックスに紐づいた「SparseBooleanArray」が作成できますね。
あとはチェックボックスをクリックしたときに値を入れかていってあげるだけですね。
 // チェックボックスのクリック処理
childCheck.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// チェックが入っているとき
if(childCheck.isChecked()) {
// チェックを外す
childCheck.setChecked(false);
// 「SparseBooleanArray」をfalseに設定
checkboxArray.put(childCheck.getId(), false);
// チェックが入っていないとき
} else {
// チェックをいれる
childCheck.setChecked(true);
// 「SparseBooleanArray」をtrueに設定
checkboxArray.put(childCheck.getId(), true);
}
}
});

チェックボックスのIDをキーとしているのでこんな感じで設定できますね。
あとは今回でいえば「0」からキーを設定しているので順番に取得していくだけです。
こんなコードはいらないと思いますが。。。
  for(int i = 0; i < checkboxArray.size(); i++) {
Log.d("checkboxArray_" + i, "" +checkboxArray.get(20000 + i));
}


以上で、前回の記事で作成したなんちゃってツリーListViewから
チェックボックスの値も取得できるようになります。

「もっといい方法があるよ!」や「なんだか全然わからないけど!」という方がいたらどんどん連絡くださいね!

ではでは、また来週(´・ω・)ノシ
スポンサーサイト

Category: 開発日記(Java)

Thread: 日記

Janre: 日記

tb 0 : cm 0   

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://halcyonsystemblog.blog.fc2.com/tb.php/26-86800f1d
この記事にトラックバックする(FC2ブログユーザー)