ListViewの表示を独自レイアウトで表示
使い道としては、画像つきリスト表示など
クックパッドやYouTubeみたいに
サムネイル表示などに使えそう
ListViewに独自レイアウトを表示するには
表示を司るAdapterクラスを拡張する必要がある
まずは、レイアウトファイルを作成して
項目用レイアウトを作成
<LinearLayout xmlns:android="http://scheams.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/image" android:layout_width="60dip" android:layout_height="60dip"/> <TextView android:id="@+id/text" android:layout_width=""wrap_content android:layout_height="wrap_content" android:choiceMode="singleChoice"/> </LinearLayout>
android:choiceMode=”singleChoice”
は、単一行のみチェック可能にする
参考サイトは
http://blogand.stack3.net/archives/83
今回は、リストアイテムとして
画像と文字にしたかったので
60×60の画像と
文字の大きさにあわせるTextViewにしている
次に、Javaで独自レイアウトの設定
ListViewに独自レイアウトを設定するため
ArrayAdapterクラスを継承し
getView()をOverrideする
public class CustomAdapter extends ArrayAdapter<CustomData>{ private layoutInflater mlayoutInflater; public CustomAdapter(Context context,int textViewResourceId, List<CustomData> objects){ super(context,textViewResourceId, objects); mlayoutInflater = (layoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent){ //特定の行 position のデータを得る CustomData item = (CustomData)getItem(position); //同じ行に表示されるViewは使い回しされるので初回だけ生成 if(null == convertView){ convertView = mlayoutInflater.inflate(R.layout.list_item,null); } //データをViewの各widgetにセット ImageView imageView; imageView = (ImageView)findViewById(R.id.image); imageView.setImageBitmap(item.getTextData()); return convertView; } }
これで、画像つきのリスト表示ができる