最終更新:
moonlight_aska 2011年05月28日(土) 09:31:52履歴

リストビューに項目を追加するには, リストビューのセットされたAdapterのaddメソッドを使用する.
- リストビューのデータを操作するAdapterを生成する.
- addメソッドで項目を追加する.
リストビューに項目を追加するには, リストビューのセットされたAdapterのremoveメソッドを使用する.
"Item2"をクリックすると, "Item2"がリストから削除される.

- クリックされた項目の文字列を取得する.
- リストビューからAdapterのオブジェクトを取得する.
- removeメソッドでクリックされた項目を削除する.
package com.moonlight_aska.android.listview01;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListView01 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView list = (ListView)findViewById(R.id.listview_id);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list);
// 項目を追加
adapter.add("Item1");
adapter.add("Item2");
adapter.add("Item3");
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
ListView list = (ListView)parent;
String item = (String)list.getItemAtPosition(position);
ArrayAdapter<String> adapter = (ArrayAdapter<String>)list.getAdapter();
// 項目を削除
adapter.remove(item);
}
});
}
}
"Item2"をクリックすると, "Item2"がリストから削除される.

このページへのコメント
他で調べてようやく理解できたと書いてしまいましたが、
自分が見たサイトを思い返してみると、同じこのサイトでした。
リストビューの基本と応用が分かれていたというおちです、すみませんでした。
「リストビュー用のxmlを作るっぽい…」まではわかったのですが、
xmlの中身をどうしたらよいかが分からず、
他で調べてようやく理解できました。
ぬお・・・私とした事が手抜きで配列使用しててハマりました。
ありがとうございます。
ListViewなんですが、add/removeを使用すると、何と強制終了に!
どうやら、ArrayAdapterのコンストラクタに String[]items で登録すると、追加/削除はできないようですね。こちらの説明にあるように、データなしのコンストラクタを使用してひたすらaddで追加するか、List<String>items で渡すべきなのでしょう。
Developers の説明には何も書いていないのですが、String[]だと追加できないのは当たり前かもしれませんね。