ListView_v2_系统提供的一些 adapter适配器


前面说了Listvie,(见 adapter适配器 SimpleAdapter介绍见 )还有些自带的adapter 这里给大家稍微介绍两个

本文源码下载:

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /2013年资料/8月/16日/ListView_v2_系统提供的一些 adapter适配器

下载方法见

第一个:ArrayAdapter

首先这个ArrayAdapter已经实现了BaseAdapter中的那四个override方法,并且这个适配器中只能有一个TextView组件,大家可能会问为什么,我们先看看ArrayAdapter的源代码
public View getView(int position, View convertView, ViewGroup parent) {
    return createViewFromResource(position, convertView, parent, mResource);
}
private View createViewFromResource(int position, View convertView, ViewGroup parent,
        int resource) {
    View view;
    TextView text;
    if (convertView == null) {
        view = mInflater.inflate(resource, parent, false);
    } else {
        view = convertView;
    }
    try {
        if (mFieldId == 0) {
            //  If no custom field is assigned, assume the whole resource is a TextView
            //arrayadatper直接将view强转为TextView
            text = (TextView) view;
        } else {
            //  Otherwise, find the TextView field within the layout
            text = (TextView) view.findViewById(mFieldId);
        }
    } catch (ClassCastException e) {
        Log.e("ArrayAdapter", "You must supply a resource ID for a TextView");
        throw new IllegalStateException(
                "ArrayAdapter requires the resource ID to be a TextView", e);
    }
    T item = getItem(position);
    if (item instanceof CharSequence) {
        text.setText((CharSequence)item);
    } else {
        text.setText(item.toString());
    }
    return view;
}

下面 来看看 怎么用这个ArrayAdapter
第一步:定义一个行布局
<?xml version="1.0" encoding="utf-8"?>
<!--这就是一个只有TextView 的layout,注意下面那个xmlns必须要有,否则下面的Android:layout_width这些属性就没了。。。-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="title1"
    >
</TextView>

在main布局里面 加入listview 这个跟前面的一样
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>
</RelativeLayout>

第二步:让MainActivity继承ListActivity,ListActivity中就有一个ListView,这样就可以直接使用setListAdapter(adapter)方法加入适配器就可以了
看一下源代码:

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //这里不能有这个了,因为ListActivity中已经有布局了,如果非得用自己的布局,也可以这个后面再说啦~~~
        //setContentView(R.layout.activity_main);
                                                                                                                                                                                                                                                                                                                                                                     
        //首先创建一个 ArrayAdapter
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.list_item, mStrings);
                                                                                                                                                                                                                                                                                                                                                                     
        /*参数说明:
        *  context: 要放入当前activity的对象,也就是那个this.
        *  textViewResourceId: 这个要放入一个TextView的资源id,就是 R.layout.list_item
        *  objects: listView的行内容,也就是mStrings.
        **/
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                     
        //ListActivity中存在一个ListView,直接设置就好
        setListAdapter(adapter);
    }
    private String[] mStrings = {//listview的一些行内容
            "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
            "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale",
            "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese",
            "Ami du Chambertin", "Anejo Enchilado", "Anneau du Vic-Bilh", "Anthoriro", "Appenzell",
            "Aragon", "Ardi Gasna",};

到这里 ArrayAdapter就算完成了看一下 , 效果吧

ListView_v2_系统提供的一些 adapter适配器

嘿嘿 这里 我遗留了一个问题,我第一篇博客有 说过不知道大家能不能找到
这个问题暂时不会导致系统崩溃,但是以后麻烦很大滴。。。
提示下:关于layout的  嘿嘿,各位同僚 慢慢找撒 O(∩_∩)O哈哈~

adapter适配器 SimpleAdapter介绍见

Android中的ListView实现图片文字和按钮

Android ListView 的下拉刷新【附源码】

Android 中ListView的优化

Android中ListView 大小因分辨率而异

  • 1
  • 2
  • 下一页

相关内容