Listは先日の「ListView positionによってViewを変える 」で使用した小説のリストを使用。
List内にCheckBox isSelectedを用意して、Adapterでは下記のような感じで適当に。
holder.isSelected.setChecked(novel.isSelected());
holder.isSelected.setTag(novel);
holder.isSelected.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
CheckBox cb = (CheckBox) arg0;
Novel novel = (Novel) cb.getTag();
novel.setSelected(cb.isChecked());
}
});
あとは何らかのイベントでリストをループで回して、isSelectedを見て必要なやつを次に渡してやればOK。
今回はボタンを用意して、クリックリスナーでの処理にした。
ArrayList purcahse_novels = new ArrayList();
for (Novel novel: novels) {
if (novel.isSelected()) {
purcahse_novels.add(novel);
}
}
Intent intent = new Intent(this, PurchaseAct.class);
intent.putExtra("PURCASE_NOVELS", purcahse_novels);
startActivity(intent);
あとは、次のアクティビティで受け取って処理するだけ。
Intent intent = getIntent();
ArrayList<Novel> novels = (ArrayList<Novel>) intent.getSerializableExtra("PURCASE_NOVELS");
TextView purchaseMessage = (TextView) findViewById(R.id.purchase_message);
String message = "これらの小説を購入しました.\n";
for (Novel novel: novels) {
message += "・" + novel.getTitle() + "\n";
}
purchaseMessage.setText(message);
意外と簡単。
チェックボックスとか、ボタンとか、スピナーとかデフォルトだとなんかアプリが味気ない。
素材作ってデザインも覚えていかないとAndroidアプリを作れるようになったとは言えないのかな。
まだまだ覚えることが多いな。