だいぶ慣れてきました。
今回はリストを複数選択できるようにします。
ポイントとなるのは次の3点です。
- android.R.layout.simple_list_item_multiple_choice
- Javaソースの26行目です。
- これをArrayAdapterのコンストラクタに渡すことで、チェックボックスが表示されます。
- setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)
- Javaソースの37行目です。
- コメントにある通り、これを実行する事で複数選択が可能となります。
- android:choiceMode="multipleChoice"
- xmlの方の11行目。
- ここでも複数選択を指定してやります。
import android.app.Activity;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ListView03 extends Activity implements OnItemClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ListViewで表示するデータを作成
for (int i = 0; i < mWords.length; i++) {
mWords[i] = String.valueOf(i);
}
// リストアダプタを作成
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_multiple_choice,
mWords);
// リストアダプタをリストビューにセット
mListView = (ListView) findViewById(R.id.listview);
mListView.setAdapter(adapter);
// ListView内部のViewがフォーカス出来ないようにする
mListView.setItemsCanFocus(false);
// 複数選択可能にする
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// クリックイベントを取得
mListView.setOnItemClickListener(this);
}
@Override
public void onItemClick(
AdapterView<?> parent,
View view,
int position,
long id) {
// 選択状態を取得する
SparseBooleanArray checked = mListView.getCheckedItemPositions();
// 選択された要素をトーストで表示
String word = "";
for (int i = 0; i < mWords.length; i++) {
word += mWords[i] +
":" +
checked.get(i) +
System.getProperty("line.separator");
}
Toast.makeText(this, word, Toast.LENGTH_LONG).show();
}
private ListView mListView;
private String[] mWords = new String[10];
}
"res/layout/main.xml"のコードは以下の通り <linearlayout
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<listview
android:id="@+id/listview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:choicemode="multipleChoice"
>
</linearlayout>
AndroidManifest.xmlは割愛します(いつもと一緒だから。。。)。
(チェックボックスが選択されているのがTrueになってます。)

0 件のコメント:
コメントを投稿