因此列表的每项都显示为一个SpeechView:
本例通过自定义BaseAdapter(实现接口ListAdapter),创建了一个自定义的ListAdapter ,类似的例子可以参见Android ApiDemos示例解析(119):Views->Gallery->1. Photos。
使用自定义的ListAdapter ,可以自定义列表项的显示UI,通过重载ListAdpater 的getView 方法,ListAdapter缺省返回的View为一TextView (文本框),Android ApiDemos示例解析(119):Views->Gallery->1. Photos中自定义返回ImageView.
本例返回一自定义View -SpeechView. 这个View由两个TextView构成,一个TextView显示Title,一个View显示内容:其构造函数定义如下:
public SpeechView(Context context, String title, String words) {
super(context);
this.setOrientation(VERTICAL);
// Here we build the child views in code. They could also have
// been specified in an XML file.
mTitle = new TextView(context);
mTitle.setText(title);
addView(mTitle, new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
mDialogue = new TextView(context);
mDialogue.setText(words);
addView(mDialogue, new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
自定义的SpeechListAdapter 的getView定义如下:
public View getView(int position, View convertView,
ViewGroup parent) {
SpeechView sv;
if (convertView == null) {
sv = new SpeechView(mContext, mTitles[position],
mDialogue[position]);
} else {
sv = (SpeechView) convertView;
sv.setTitle(mTitles[position]);
sv.setDialogue(mDialogue[position]);
}
return sv;
}