Android ListViewの例
Androidでは、ListViewを使用すると、コンポーネントを垂直方向のスクロール可能なリストに配置できます。
このチュートリアルでは、2ListView
の例を示します。
-
コンポーネントを
ListView
で表示する通常の方法。 -
ListView
でのアイテム表示をカスタマイズするためのカスタム配列アダプター。
P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.
1. 通常のリストビューの例
この例では、ListView
を介して果物の名前のリストを表示する方法を示します。これは、簡単でわかりやすいはずです。
1.1 Android Layout file
ファイル:res / layout / list_fruit.xml
1.2 ListView
package com.example.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(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 Demo
2. カスタムArrayAdapterの例
この例では、ListView
に4つのアイテムを作成し、カスタムの「ArrayAdapter
」を使用して、リストの「アイテム名」に基づいてさまざまな画像を表示する方法を示します。
2.1 Images
デモンストレーション用に4つの画像を取得します。
2.2 Android Layout file
ファイル:res / layout / list_mobile.xml
2.3 Custom ArrayAdapter
クラスを作成してArrayAdapter
を拡張し、getView()
メソッドでアイテムの表示をカスタマイズします。
package com.example.android.adaptor; import com.example.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{ 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 ListViewListView
ですが、上記のカスタムアダプタを使用してリストを表示します。
package com.example.android; import com.example.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 Demo
ソースコードをダウンロード
両方の例をダウンロード–Android-ListView-Example.zip(21 KB)