您的位置:首页 > 其它

第四篇:自定义带图片的ListView的实现(一)

2012-03-07 11:04 295 查看
肥鱼最近受朋友委托要写一个小说阅读器.

肥鱼觉得Ireader的书架特别漂亮.

可是,肥鱼没有美工,而且肥鱼的艺术细胞太少了.

肥鱼要做一个列表形式的.

大家看看肥鱼想实现的界面,后面接着上传源码.



界面很简单,左侧显示一张图片,右侧上下显示两行文字.

废话少说,接下来看一下一步步的实现.

第一步,我们先定义一个xml的布局文件,该布局文件的样式就是你希望能够在listview中显示的item的样式.也就是咱们界面中文字 图片的显示.

list.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/relativeLayout1"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<ImageView

android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_centerVertical="true" />

<TextView

android:id="@+id/title"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignTop="@id/image"

android:layout_toRightOf="@id/image"

android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView

android:id="@+id/info"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/title"

android:layout_below="@+id/title" />

</RelativeLayout>

这里使用了一RelativeLayout,这样较方便的就能够将控件的位置定义好.

接下来我们看一下Activity的实现.这里,肥鱼使用了一个ListActivity.

ListViewActivity.java

public class ListViewActivity extends ListActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

SimpleAdapter adapter = new SimpleAdapter(this, getData(),

R.layout.list, new String[] { "title", "info", "image" },

new int[] { R.id.title, R.id.info, R.id.image });

setListAdapter(adapter);

}

// 该方法取得数据

private List<Map<String, Object>> getData() {

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

Map<String, Object> map;

map = new HashMap<String, Object>();

map.put("title", "测试标题一");

map.put("info", "这是一个测试标题(一)");

map.put("image", R.drawable.ic_launcher);

list.add(map);

map = new HashMap<String, Object>();

map.put("title", "测试标题二");

map.put("info", "这是一个测试标题(二)");

map.put("image", R.drawable.ic_launcher);

list.add(map);

map = new HashMap<String, Object>();

map.put("title", "测试标题三");

map.put("info", "这是一个测试标题(三)");

map.put("image", R.drawable.ic_launcher);

list.add(map);

return list;

}

}

启动模拟器,看一下运行效果.

肥鱼发现一个问题,就是用这样的方式来实现的List,图片只能加载项目里面自带的图片,来自SD卡或者网络的图片不能加载.看了下ListActivity的源码发现,bindView(int position, View view);这个方法造成的只能加载资源中的图片.

2012年3月7日11:17:03 纠正一个错误:

bindView(int position, View view)方法是Adapter中的而不是ListActivity中的.

肥鱼正在研究,研究好了跟大家分享.

项目源码下载: http://download.csdn.net/download/amheaven1121/4119259
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐