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

ok
贴code :-)
基本上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
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- setContentView(R.layout.notepad_list);
- List
- Map
- map1.put("icon", Integer.toString(R.drawable.mail));
- map1.put("text", "Mail");
- itemList.add(map1);
- Map
- map2.put("icon", Integer.toString(R.drawable.clock));
- map2.put("text", "Clock");
- itemList.add(map2);
- Map
- map3.put("icon", Integer.toString(R.drawable.maps));
- map3.put("text", "Maps");
- itemList.add(map3);
- Map
- map4.put("icon", Integer.toString(R.drawable.photos));
- map4.put("text", "Photos");
- itemList.add(map4);
- IconTextAdapter adapter = new IconTextAdapter(this, itemList,
- R.id.text2, R.id.text1, R.layout.notes_row);
- this.setListAdapter(adapter);
- }
class IconTextAdapter extends BaseAdaptor
- public View getView(int position, View convertView, ViewGroup parent) {
- String iconResource = data.get(position).get(ICON_KEY);
- String textValue = data.get(position).get(TEXT_KEY);
- ViewInflate vi = ViewInflate.from(c);
- LinearLayout layout = (LinearLayout) vi.inflate(iconTextId, null,
- null);
- ImageView icon1 = (ImageView) layout.findViewById(iconId);
- TextView text1 = (TextView) layout.findViewById(textId);
- icon1.setImageResource(Integer.parseInt(iconResource));
- text1.setText(textValue);
- return layout;
- }
发表评论
- 浏览: 1076 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Websphere sMash
总结的比较全面,谢谢分享!
-- by 艾依然 -
Websphere sMash
dmewy 写道app server? 简单的说,一个sMash应用程序就是一个 ...
-- by cocococoon -
Websphere sMash
app server?
-- by dmewy -
Colifer :我的Android学 ...
看效果还不错,有代码吗,想学习下,不过,可惜它的api文档在网上,有没有chm版 ...
-- by hxdream -
Colifer :我的Android学 ...
看着效果不错! 我也要开始抽点时间学习了.
-- by LinuxFans






评论排行榜