スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android ListView AdapterViewへのデータのバインド

データのバインド	
AdapterViewを利用してデータを紐づけることをデータをバインドすると言います。

■AdapterViewを利用してリストへデータをバインドする
○サンプル

1: package sample.android.test;
2:
3: import android.app.Activity;
4: import android.os.Bundle;
5: import android.view.View;
6: import android.widget.AdapterView;
7: import android.widget.ArrayAdapter;
8: import android.widget.ListView;
9: import android.widget.Toast;
10: import android.widget.AdapterView.OnItemClickListener;
11:
12: public class Sample1 extends Activity {
13: private ListView lv;
14:
15: @Override
16: public void onCreate(Bundle savedInstanceState) {
17: super.onCreate(savedInstanceState);
18: setContentView(R.layout.main);
19:
20: lv = (ListView) findViewById(R.id.custlist);
21:
22: String[] data = new String[] { "sample1", "sample2", "sample3" }; ①
23: ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, ②
24: android.R.layout.simple_list_item_1, data);
25: lv.setAdapter(adapter); ③
26:
27: lv.setOnItemClickListener(itemClick);
28: lv.setOnItemLongClickListener(itemLongClick);
29: }
30:
31: private AdapterView.OnItemClickListener itemClick = new AdapterView.OnItemClickListener() { ④
32: @Override
33: public void onItemClick(AdapterView<?> parent, View view, int position,long id) { ⑤
34: String item = (String) lv.getItemAtPosition(position); ⑥
35: Toast.makeText(Sample1.this, item + "がクリックされました",Toast.LENGTH_LONG).show();
36: }
37: };
38: private AdapterView.OnItemLongClickListener itemLongClick = new AdapterView.OnItemLongClickListener() { ⑦
39: @Override
40: public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {
41: String item = (String) lv.getItemAtPosition(position);
42: Toast.makeText(Sample1.this, item + "が長押しされました", Toast.LENGTH_LONG).show();
43: return false;
44: }
45: };
46:
47: }
48:
①バインドするデータ配列
②Stringデータをバインドするため<String>とします
第一引数に自身、第二引数にはレイアウトを設定します。第三引数にはバインドするデータ配列を指定します。
③ListViewに対してsetAdapterでAdapterを設定します。
④リストでアイテムがクリックされたときに呼ばれるOnItemClickListerを実装します。
⑤onItemClickメソッドを実装します。
第一引数はAdapterViewを継承したウィジェット、第二引数はクリックされた行のウィジェット、第三引数は行番号
第四引数はidをバインドしたデータの行番号となります。
⑥ListView.getItemAtPositionでリストの文字列を取得できます。
⑦OnItemLongClickはアイテムを長押ししたときに呼ばれます。
○main.xml
1: <?xml version="1.0" encoding="utf-8"?>
2: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3: android:orientation="vertical"
4: android:layout_width="fill_parent"
5: android:layout_height="fill_parent"
6: >
7: <ListViewandroid:id="@+id/custlist"
8: android:layout_width="fill_parent"
9: android:layout_height="wrap_content"
10: />
11: </LinearLayout>
実行画面

■simple_list_item_1とは
AndroidSDKにて標準搭載されているレイアウトです。中ではTextViewを実装しています。
プロジェクト内で作成しているわけではありません。
○simple_list_item_1

1: <?xml version="1.0" encoding="utf-8"?>
2: <!--
3: /*
4: * Copyright (C) 2006-2008 Google Inc.
5: *
6: * Licensed under the Apache License, Version 2.0 (the "License");
7: * you may not use this file except in compliance with the License.
8: * You may obtain a copy of the License at
9: *
10: *http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS,
14: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: */
18: -->
19:
20: <TextView xmlns:android="http://schemas.android.com/apk/res/android"
21: android:id="@android:id/text1"
22: android:layout_width="fill_parent"
23: android:layout_height="wrap_content"
24: android:textAppearance="?android:attr/textAppearanceLarge"
25: android:gravity="center_vertical"
26: android:paddingLeft="6dip"
27: android:minHeight="?android:attr/listPreferredItemHeight"
28: />
スポンサーサイト

コメントの投稿

非公開コメント

おすすめアプリ
カテゴリ
最新記事
リンク
アクセスカウンター
アクセス解析
imobile
i-mobile
i-mobile
i-mobile
i-mobile
i-mobile
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Amazon
Androidお勧め参考書
EC studio
商品
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。