Android -ListView(データの追加)-
要素の追加
要素の変更は、通常アダプター介して行います。
要素を追加する場合は、add()メソッドを使用します。
リストの要素を直接に変更する場合は、アダプタに変更を通知することのできるnotifyDataSetChangedメソッドを使用します。
ListViewEx5.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListViewEx5 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView listView = new ListView(this);
setContentView(listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
// 要素の追加・・・(1)
adapter.add("a");
adapter.add("b");
adapter.add("c");
listView.setAdapter(adapter);
}
}
(1)要素の追加
void add(T object)
データをボタンで追加するサンプル(ListViewクラス利用)
res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="入力して下さい"/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="追加" />
<ListView
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
ListViewEx6.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
public class ListViewEx6 extends Activity {
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//ListViewオブジェクトの取得
ListView listView=(ListView)findViewById(R.id.list_view);
//ArrayAdapterオブジェクト生成
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
//Buttonオブジェクト取得
Button btn=(Button)findViewById(R.id.btn);
//クリックイベントの通知先指定
btn.setOnClickListener(new OnClickListener() {
//クリックイベント
@Override
public void onClick(View v) {
//要素追加
addStringData();
}
});
//Adapterのセット
listView.setAdapter(adapter);
} //要素追加処理
private void addStringData(){
//EditTextオブジェクト取得
EditText edit=(EditText)findViewById(R.id.edit_text);
//EditText(テキスト)を取得し、アダプタに追加
adapter.add(edit.getText().toString());
}
}
データをボタンで追加するサンプル(ListActivityクラス利用)
res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="入力して下さい"/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="追加" />
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="データは存在しません"/>
</LinearLayout>
ListViewEx7.java
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
public class ListViewEx7 extends ListActivity {
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//ArrayAdapterオブジェクト生成
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
//ListAdapterセット
setListAdapter(adapter);
//Buttonオブジェクト取得
Button btn=(Button)findViewById(R.id.btn);
//クリックイベントの通知先指定
btn.setOnClickListener(new OnClickListener() {
//クリックイベント
@Override
public void onClick(View v) {
//要素追加
addStringData();
}
});
}
//要素追加処理
private void addStringData(){
//EditTextオブジェクト取得
EditText edit=(EditText)findViewById(R.id.edit_text);
//EditText(テキスト)を取得し、アダプタに追加
adapter.add(edit.getText().toString());
}
}