ListView学习笔记之一

来源:互联网 发布:在手机淘宝开店步骤 编辑:程序博客网 时间:2024/06/06 14:20

listview的显示需要三个元素:


1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据    具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

一\ ArrayAdapter

java.lang.Object
   ↳ android.widget.BaseAdapter
    ↳ android.widget.ArrayAdapter<T>
extends BaseAdapter
implements Filterable

类简介
默认的的ResourceID为TextView,若要用其他视图组建,重写getView(int, View, ViewGroup),返回所需要的视图

举例
public ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
Parameters
context The current context.
textViewResourceId The resource ID for a layout file containing a TextView to use when instantiating views.
objects The objects to represent in the ListView.

public class MyListView extends Activity {
 
    private ListView listView;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
         
        listView = new ListView(this);       
        //android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字
        listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
        setContentView(listView);
    }

    private List<String> getData(){
         
        List<String> data = new ArrayList<String>();
        data.add("测试数据1");
        data.add("测试数据2");
        data.add("测试数据3");
        data.add("测试数据4");         
        return data;
    }
}


二、CursorAdapter
通过游标获得数据后,在listview中显示结果。
Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);先获得一个指向系统通讯录数据库的Cursor对象获得数据来源。
 startManagingCursor(cursor);我们将获得的Cursor对象交由Activity管理,这样Cursor的生命周期和Activity便能够自动同步。
 SimpleCursorAdapter 构造函数前面3个参数和ArrayAdapter是一样的,最后两个参数:一个包含数据库的列的String型数组,一个包含布局文件中对应组件id的int型数组。其作用是自动的将String型数组所表示的每一列数据映射到布局文件对应id的组件上。下面的代码,将NAME列的数据一次映射到布局文件的id为text1的组件上。


注意:需要在AndroidManifest.xml中如权限:<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

SimpleCursorAdapter
extends ResourceCursorAdapter
java.lang.Object
   ↳ android.widget.BaseAdapter
    ↳ android.widget.CursorAdapter
    ↳android.widget.ResourceCursorAdapter
    ↳android.widget.SimpleCursorAdapter

函数简介
public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)
Parameters
context    The context where the ListView associated with this SimpleListItemFactory is running
layout    resource identifier of a layout file that defines the views for this list item. The layout file should include at least those named views defined in "to"
c The database cursor. Can be null if the cursor is not available yet.
from A list of column names representing the data to bind to the UI. Can be null if the cursor is not available yet.
to The views that should display column in the "from" parameter. These should all be TextViews. The first N views in this list are given the values of the first N columns in the from parameter. Can be null if the cursor is not available yet.

举例

public class MainActivity extends Activity {
 
    private ListView listView;
@Override
    public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
listView = new ListView(this);

Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(cursor);

ListAdapter listAdapter = new SimpleCursorAdapter(this,  android.R.layout.simple_expandable_list_item_1, cursor,
new String[] { People.NAME }, new int[] { android.R.id.text1 });
listView.setAdapter(listAdapter);
setContentView(listView);
    }
*CursorAdapter 常与数据库查询配合使用,获得的数据结果显示在listview中。

如果将simplecursoradapter改成这样:

ListAdapter listAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_expandable_list_item_2, cursor,
new String[] { People.NAME, People.NAME }, new int[] { android.R.id.text1,android.R.id.text2 });

则会显示android.R.layout.simple_expandable_list_item_2对应格式的list。



整理来自: http://blog.csdn.net/x359981514/article/details/8120731