今回は1行分のレイアウトをカスタマイズして3つのテキストを表示させてみたいと思います
BaseAdapterクラスを拡張
BaseAdapterクラスを拡張することでオリジナルのAdapterクラスを定義し
getCount・getItem・getItemId・getViewを実装します
その中のgetViewメソッドを変更しリスト項目のレイアウトを自由にカスタマイズする事ができます
具体的にやってみます
今回はリストビュー1行につき3つの項目
日本人メジャーリーガーの名前、背番号、チーム名を表示させました
package blog.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
//独自クラスMemberを作成
private class Member {
private String name,team;
private int number;
public Member(String name, int number , String team) {
this.name = name;
this.number = number;
this.team = team;
}
public String getName() {
return name;
}
public int getNumber() {
return number;
}
public String getTeam() {
return team;
}
}
//BaseAdapterを拡張した独自Adapterの定義
private class ListMemberAdapter extends BaseAdapter {
private Context context;
private List list;
public ListMemberAdapter(Context context) {
super();
this.context = context;
//ListにMemberを追加する
//追加にはMemberクラスを使用
list = new ArrayList();
list.add(new Member("Ichiro", 51,"Mariners"));
list.add(new Member("Matsui", 55,"Rays"));
list.add(new Member("Darvish", 11,"Rangers"));
}
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return list.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Member member = (Member) getItem(position);
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
convertView = layout;
//Nameを入力
TextView tvName = new TextView(context);
tvName.setText("Name : "+member.getName());
layout.addView(tvName);
//Numberを入力
TextView tvNumber = new TextView(context);
tvNumber.setText("Number : "+String.valueOf(member.getNumber()));
layout.addView(tvNumber);
//Teamを入力
TextView tvTeam = new TextView(context);
tvTeam.setText("Team : "+member.getTeam());
layout.addView(tvTeam);
return convertView;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView lv = new ListView(this);
setContentView(lv);
lv.setAdapter(new ListMemberAdapter(this));
}
}
ListMemberAdapterクラスでgetViewを変更しています
getViewの戻り値となるViewオブジェクトは、リスト項目を表示するViewオブジェクトとなります
つまり、このgetViewメソッドで、TextViewオブジェクトを3つ作成して
変数positionが示す列位置にある、MemberのName/Number/Teamの値を表示するように指定して
これが1行分となります
このプログラムの結果は以下のようになります
リストビュー1行に3項目表示されています
スポンサードリンク
【ウィジェット リストビューの最新記事】


