Android杂谈-ListView之SimpleAdapter的应用

2016-04-12 07:25:15 文章

Android杂谈--ListView之SimpleAdapter的使用

SimpleAdapter

SimpleAdapter是扩展性最好的适配器,可以定义各种你想要的布局,而且使用很方便

SimpleAdapter(Context context, ListMap<String, ?>> data, int resource, String[] from, int[] to)

参数context:上下文,比如this。关联SimpleAdapter运行的视图上下文

参数data:Map列表,列表要显示的数据,这部分需要自己实现,如例子中的getData(),类型要与上面的一致,每条项目要与from中指定条目一致

参数resource:ListView单项布局文件的Id,这个布局就是你自定义的布局了,你想显示什么样子的布局都在这个布局中。这个布局中必须包括了to中定义的控件id

参数 from:一个被添加到Map上关联每一个项目列名称的列表,数组里面是列名称

参数 to:是一个int数组,数组里面的id是自定义布局中各个控件的id,需要与上面的from对应

SimpleAdapter可以使用自定义的ListView,然后setContentView即可。也可以直接使用系统自带的ListAcitivity,该ListActivity实现了ListView,显示ListView的时候做了很多优化。

ListActivity直接extends ListActivity即可,不需要在setContentView了

例子一:自定义布局,显示本地资源

如果直接继承ListAcitivty,则不需要自定义ListView,下面的是列表项单项显示格式


android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >

android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3px"
/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
/>
android:id="@+id/info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="10sp"
/>

Activity

package com.loulijun.demo13;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.SimpleAdapter;

public class Demo13Activity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

-----------------------------------------------------

如果使用自定义的ListView就需要在上面的代码修改一下下了,Acitivity其他部分都一样,区别在于灰色区域

public class Demo13Activity extends Activity {
private ListView lv;
@Override
public void src="/uploads/2016/04/12/android51765120726241.png">

|------------------------------------|

用户可以自定义布局,可以是线性布局,也可以是网格布局等等

接下来说说ViewBinder的使用,上面的例子中我们显示了本地资源,图片都是保存在本地的,但是用上面的方法显示网络上获取的图片却有问题,因为如果ListView要显示外部资源的话必须要设置ViewBinder,通过ViewBinder的绑定机制来显示网络资源,下面是个显示网络图片的例子(如果可能的话,最好还是使用BaseAdapter)


例子二:自定义布局,显示网络资源,ViewBinder的使用

由于需要访问网络资源,首先在你的清单文件中加入权限

package com.loulijun.demo13;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleAdapter.ViewBinder;

public class Demo13Activity extends Activity {
private ListView lv;
private static final String iphoneUrl = "http://www.51aigoo.com/images/20100107/6b21df8c2419480e.jpg";
private static final String macbookproUrl = "http://www.esundigi.net/images/goods/20110317/6ece8f319694f0b1.jpg";
@Override
public void src="/uploads/2016/04/12/android51765120726242.png">

原文:http://www.cnblogs.com/loulijun/archive/2011/12/27/2303488.html

本文地址:https://www.sdfzl.com/jiaocheng-90773-1.shtml

相关阅读

热门