Androidリストビューの例
Androidでは、http://developer.android.com/reference/android/widget/ListView.html[ListView]を使用すると、コンポーネントを垂直スクロール可能リストに配置できます。
このチュートリアルでは、2つの `ListView`の例を示します:
-
`ListView`でコンポーネントを表示する通常の方法です.
-
`ListView`の項目表示をカスタマイズするためのカスタム配列アダプタです.
P.SこのプロジェクトはEclipse 3.7で開発され、Android 2.3.3.
でテストされています
1.通常のListViewの例
この例では、 `ListView`を介して果物の名前のリストを表示する方法を示します。簡単で自明でなければなりません。
1.1 Androidレイアウトfile
ファイル:res/layout/list__fruit.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout__width="fill__parent" android:layout__height="fill__parent" android:padding="10dp" android:textSize="20sp" > </TextView>
1.2 ListView
package com.mkyong.android; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class ListFruitActivity extends ListActivity { static final String[]FRUITS = new String[]{ "Apple", "Avocado", "Banana", "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit", "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //no more this //setContentView(R.layout.list__fruit); setListAdapter(new ArrayAdapter<String>(this, R.layout.list__fruit,FRUITS)); ListView listView = getListView(); listView.setTextFilterEnabled(true); listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //When clicked, show a toast with the TextView text Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH__SHORT).show(); } }); } }
1.3デモ
2.カスタムArrayAdapterの例
この例では、
ListView`で4つのアイテムを作成する方法を示し、カスタムの
`ArrayAdapter`”を使用して、リスト内の “アイテム名”に異なるイメージベースを表示します。
2.1 Images
デモのために4枚の画像を取得します。
、width = 480、height = 312]
2.2 Androidレイアウトfile
ファイル:res/layout/list__mobile.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout__width="wrap__content" android:layout__height="wrap__content" android:padding="5dp" > <ImageView android:id="@+id/logo" android:layout__width="50px" android:layout__height="50px" android:layout__marginLeft="5px" android:layout__marginRight="20px" android:layout__marginTop="5px" android:src="@drawable/windowsmobile__logo" > </ImageView> <TextView android:id="@+id/label" android:layout__width="wrap__content" android:layout__height="wrap__content" android:text="@+id/label" android:textSize="30px" > </TextView> </LinearLayout>
2.3カスタムArrayAdapter
クラスを作成して
ArrayAdapter`を拡張し、
getView() `メソッドで項目表示をカスタマイズします。
package com.mkyong.android.adaptor; import com.mkyong.android.R; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class MobileArrayAdapter extends ArrayAdapter<String> { private final Context context; private final String[]values; public MobileArrayAdapter(Context context, String[]values) { super(context, R.layout.list__mobile, values); this.context = context; this.values = values; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT__INFLATER__SERVICE); View rowView = inflater.inflate(R.layout.list__mobile, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.label); ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); textView.setText(values[position]); //Change icon based on name String s = values[position]; System.out.println(s); if (s.equals("WindowsMobile")) { imageView.setImageResource(R.drawable.windowsmobile__logo); } else if (s.equals("iOS")) { imageView.setImageResource(R.drawable.ios__logo); } else if (s.equals("Blackberry")) { imageView.setImageResource(R.drawable.blackberry__logo); } else { imageView.setImageResource(R.drawable.android__logo); } return rowView; } }
2.4 ListView
+
ListView
、ただし上記のカスタムアダプタを使用してリストを表示します。
package com.mkyong.android; import com.mkyong.android.adaptor.MobileArrayAdapter; import android.app.ListActivity; import android.os.Bundle; import android.widget.ListView; import android.widget.Toast; import android.view.View; public class ListMobileActivity extends ListActivity { static final String[]MOBILE__OS = new String[]{ "Android", "iOS", "WindowsMobile", "Blackberry"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new MobileArrayAdapter(this, MOBILE__OS)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { //get selected items String selectedValue = (String) getListAdapter().getItem(position); Toast.makeText(this, selectedValue, Toast.LENGTH__SHORT).show(); } }
2.5デモ
ソースコードをダウンロードする
両方の例をダウンロード –
Android-ListView-Example.zip
(21 KB)
参考文献
リストビューの例]。
http://developer.android.com/reference/android/widget/ListView.html
[Android
ListView JavaDoc]
リンク://タグ/アンドロイド/[アンドロイド]リンク://タグ/リストビュー/[リストビュー]