Android ListView 最基本的用法,使用SimpleCursorAdapter

一般在做网页的时候,要显示一个列表的数据,一般是对一个list的类进行循环,输出一大串的HTML字符串。数据比较多的话就会分页,比如一页10条记录,去数据库查询的时候就会limit 10条记录,速度非常快。

在Android中遇到几千条数据的时候,上下滑动,跟几十条数据的滑动流畅程度差不多,就是刚开始载入速度不一样。对Android 中的Adapter 数据绑定,进行Log输出后,发现是边滑动,数据边绑定的,并不是有多少数据一次性绑定完。但是数据一般是用sql 语句一次性查询出来,这点跟Web中的还是有点区别。


好了废话说了很多,Android中ListView一般跟Cursor和Adapter有关。很多东西google都帮你弄好了,你只需要按照它约定的弄就行了。之前我非常反感这种约定俗成的方式,觉得别人要求你该怎么写,你就该怎么写,但是只从读了这么一句话“你动不了Application Framework 的大结构,也不需要动。这是福利不是约束”。我就坦然了。

这次介绍的是

[java]  view plain copy
  1. SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)  

第二个layout的参数是ListView中单行的布局, c是你数据的游标。刚开始其实from和to比较让人不熟悉,From是你查询出的数据,to是单行布局中的单独控件,一对一的关系,用起来非常方便。下面的是具体的例子。

[java]  view plain copy
  1. SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,  
  2.                 R.layout.provice_list_item, cursor,  
  3.                 new String[] {Location.PROVICE, Location.CITY },  
  4.                 new int[] { R.id.princeTextView,android.R.id.text1 });  

写好Adapter,基本上大部分工作已经完成,只需要给你的listview设置这个adapter就行了。一个显示数据的列表就完成了。


下面是关键的代码:

[java]  view plain copy
  1. package com.waitingfy.android;  
  2.   
  3.   
  4.   
  5. import com.waitingfy.android.ServiceInfo.Location;  
  6.   
  7. import android.app.ListActivity;  
  8. import android.database.Cursor;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.widget.ListView;  
  12. import android.widget.SimpleCursorAdapter;  
  13.   
  14. //注意,要继承ListActivity,而不是普通的Activity  
  15. public class BasicListViewActivity extends ListActivity {  
  16.     /** 
  17.      *定义我们需要筛选的字段,ID是必须项,否则会报错。  
  18.      */  
  19.     String[] mLocationProjection={  
  20.             Location._ID,  
  21.             Location.PROVICE,  
  22.             Location.CITY  
  23.     };  
  24.     /** Called when the activity is first created. */  
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         //注意用到的布局中必须有定义id为"@android:id/list"的Listview控件  
  29.         setContentView(R.layout.main);  
  30.         Cursor cursor = getContentResolver().query(Location.CONTENT_URI, mLocationProjection,  
  31.                 nullnullnull);  
  32.         //from跟to,非常有趣,把什么值显示在什么控件上。,是一个数组,支持多个绑定  
  33.         SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,  
  34.                 R.layout.provice_list_item, cursor,  
  35.                 new String[] {Location.PROVICE, Location.CITY },  
  36.                 new int[] { R.id.princeTextView,android.R.id.text1 });  
  37.         //给listview设置cursor有很多种方式,这是最简单的方式  
  38.         setListAdapter(adapter);  
  39.         /**下面的去掉注释后就ok*/  
  40. //      //第二种方式  
  41. //      ListView mListView = (ListView)findViewById(android.R.id.list);  
  42. //      mListView.setAdapter(adapter);  
  43. //      View view = (View)findViewById(R.id.emptyView);  
  44. //      //可以设置"当没有数据时"显示的布局  
  45. //      mListView.setEmptyView(view);  
  46.         /**上面去掉注释后就ok*/  
  47.     }  
  48. }  

后面会介绍ListView的其他用法。先到这里。

记得下载整个例子好好看下,里面自带数据库文件。

例子下载

文章源地址:http://www.waitingfy.com/?p=141

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值