|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-11-22
这几天在搞带有icon的list item,但实现方法貌似很复杂,照着国外达人的一些code snippet也搞不定,他们也没把全部的code发出了,NND。。。怒!今天终于集众家之大成。。。搞定一个了。。。想想还是GWT好,一个composite widget就很轻松搞定了。。。Android目前还算是垃圾滴。。。
做个ImageItem class存放icon和text: java 代码
然后做个View给这个composite view,这里extend了linearlayout,但你也可以使用其他的layout: java 代码
接下来要做个Adapater给我们新建的composite view: public class ImageItemArrayAdapter extends BaseAdapter { private Context context; private List<ImageItem> items; public ImageItemArrayAdapter(Context ctx) { context = ctx; items = new ArrayList<ImageItem>(); } 里面要实现getView这个method,这里return上面新建的ImageItemView: java 代码
最后用一个简单的ListActivity来demo下: java 代码
请看截图,效果不错吧!这个实现我觉得应该在google android API缺省要直接提供,毕竟用到的情况很多很多。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2007-11-22
android不是号称采取gwt前端开发模式吗?
|
|
| 返回顶楼 | |
|
时间:2007-11-22
这样实现ListVie的Row有点太麻烦了,我想可以用xml composite layout以及google提供的一些内建Class来做,做了一个小实验:
定义layout, row.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView id="@+id/text1" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView id="@+id/text2" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="2"/> </LinearLayout> 这里是用2个TextView来做横向排列的组合 在Activity里面就可以这样写了:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("text", "text1");
i1.put("icon", "icon1");
items.add(i1);
Map i2 = new HashMap();
i2.put("text", "text2");
i2.put("icon", "icon2");
items.add(i2);
ListAdapter adapter = new SimpleAdapter(this, items, R.layout.row, new String[] { "icon", "text" }, new int[] { R.id.text1, R.id.text2 });
setListAdapter(adapter);
}
这里用了SDK提供的SimpleAdapter,来把一个Map通过key值绑定到了layout id上,这样出来了附件的显示效果,距离我们想要的最终效果就是文字和图标的区别。 下一步就是把row.xml中的其中一个TextView替换成ImageView: <ImageView id="@+id/icon1" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="1"/> 由于SimpleAdapter只能绑定到TextView,我们还需要自己写一个IconTextAdapter extends SimpleAdapter,重写里面的绑定数据到ImageView的方法,就能够实现想要的效果了。 可惜SDK里面的android.jar还没有放出源代码来,也没有相关的例子,光看api文档摸索需要一些时间,我就偷懒了, 这个实验就做到此, |
|
| 返回顶楼 | |
|
时间:2007-11-22
大哥,你强大啊!如果能把MapView搞进compsite view里面就NB了!
快点啊,拉票人一起参赛啊! |
|
| 返回顶楼 | |
|
时间:2007-11-30
根据Quake Wang的提示,实现如下,相当简单
public class IconTextAdapter extends SimpleAdapter {
private int[] mIcons;
private int mIconId;
/**
* @param icons 要显示的Icon资源id
* @param iconId icon在layout中的id
*/
public IconTextAdapter(Context context, List data,
int resource, String[] from, int[] to,
int[] icons, int iconId) {
super(context, data, resource, from, to);
mIcons = icons;
mIconId = iconId;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ImageView img = (ImageView) v.findViewById(mIconId);
img.setImageResource(mIcons[position]);
return v;
}
}
|
|
| 返回顶楼 | |
|
时间:2007-12-08
j2mepolish 里边定义着一个IconItem(extends Item), 很容易实现楼主要噶效果...
|
|
| 返回顶楼 | |
|
时间:2007-12-09
珍爱生命,远离J2ME。。。
|
|
| 返回顶楼 | |
|
时间:2007-12-19
lz,xm初学andoid,用您提供的代码自己建了个工程运行了一把,没有出结果,本人对您的方法非常感兴趣,能否把源代码提供一下,不胜感激!
|
|
| 返回顶楼 | |
|
时间:2008-01-02
楼上MM站内短信已经回复。
|
|
| 返回顶楼 | |
|
时间:2008-01-17
本人对您的方法非常感兴趣,能否把源代码提供一下,不胜感激
|
|
| 返回顶楼 | |










