Android ApiDemos示范解析(171):Views->Lists->4. ListAdapter
Android ApiDemos示例解析(171):Views->Lists->4. ListAdapter
自定义的SpeechListAdapter 的getView定义如下:
本例通过自定义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; }
因此列表的每项都显示为一个SpeechView: