2007-11-25

Android - 关于Icon Text List的讨论

关键字: Android, UI
最近2个星期忙坏了,晚上都没有时间来看看Android。这么久了,也没写点什么东西。昨天看到Quake和lordhong关于带Icon的List的讨论,感觉很有意思。

基本上lordhong的实现挺完整的,可以进一步优化的地方是每个list上的item最好用xml来描述View,而不是用code。
Quake提到了一个简化的思路,其实最关键部分俺觉得也就是item的View用xml来描述,而且提到了SimpleAdaptor不能做到的功能。

在lordhong的code里面已经用到了BaseAdaptor,好像很强大的样子。。。能拿来实现icon带text的view么?
恩。。 如果不通过code方式,怎么把xml的view读出来呢
看看SimpleAdaptor构造方法

SimpleAdapter(Context context, List data, int resource, String[] from, int[] to)

Context被传进去了,数据被传进去了,各个textView的id都传进去了。。。里面应该发生什么呢?
应该。。
通过context找到item(也就是Note例子中的note_row.xml)的xml描述,并根据传进去的id找到xml中的view,稍微改改view的属性(因为每行都是一样字体,但是图片和文字不是一样的。。。)然后返回每一个view。


会不会很简单呢?



ok
贴code :-)

class Notepadv1 extends ListActivity
  1. public void onCreate(Bundle icicle) {
  2. super.onCreate(icicle);
  3. setContentView(R.layout.notepad_list);
  4. List
  5. Map
  6. map1.put("icon", Integer.toString(R.drawable.mail));
  7. map1.put("text", "Mail");
  8. itemList.add(map1);
  9. Map
  10. map2.put("icon", Integer.toString(R.drawable.clock));
  11. map2.put("text", "Clock");
  12. itemList.add(map2);
  13. Map
  14. map3.put("icon", Integer.toString(R.drawable.maps));
  15. map3.put("text", "Maps");
  16. itemList.add(map3);
  17. Map
  18. map4.put("icon", Integer.toString(R.drawable.photos));
  19. map4.put("text", "Photos");
  20. itemList.add(map4);
  21. IconTextAdapter adapter = new IconTextAdapter(this, itemList,
  22. R.id.text2, R.id.text1, R.layout.notes_row);
  23. this.setListAdapter(adapter);
  24. }


class IconTextAdapter extends BaseAdaptor
  1. public View getView(int position, View convertView, ViewGroup parent) {
  2. String iconResource = data.get(position).get(ICON_KEY);
  3. String textValue = data.get(position).get(TEXT_KEY);
  4. ViewInflate vi = ViewInflate.from(c);
  5. LinearLayout layout = (LinearLayout) vi.inflate(iconTextId, null,
  6. null);
  7. ImageView icon1 = (ImageView) layout.findViewById(iconId);
  8. TextView text1 = (TextView) layout.findViewById(textId);
  9. icon1.setImageResource(Integer.parseInt(iconResource));
  10. text1.setText(textValue);
  11. return layout;
  12. }
  • 1ab47ee2-a0d1-48bb-8935-a1f00ebb7290-thumb
  • 描述: Icon Text List
  • 大小: 20.3 KB
评论
lordhong 2007-11-25
不错,强大,呵呵!
发表评论

您还没有登录,请登录后发表评论

larryzou
搜索本博客
博客分类
存档
最新评论