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

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


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

这次介绍的是

SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)

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

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.provice_list_item, cursor,new String[] {Location.PROVICE, Location.CITY },new int[] { R.id.princeTextView,android.R.id.text1 });

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


下面是关键的代码:

package com.waitingfy.android;import com.waitingfy.android.ServiceInfo.Location;import android.app.ListActivity;import android.database.Cursor;import android.os.Bundle;import android.view.View;import android.widget.ListView;import android.widget.SimpleCursorAdapter;//注意,要继承ListActivity,而不是普通的Activitypublic class BasicListViewActivity extends ListActivity {/** *定义我们需要筛选的字段,ID是必须项,否则会报错。  */String[] mLocationProjection={Location._ID,Location.PROVICE,Location.CITY};    /** Called when the activity is first created. */    @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//注意用到的布局中必须有定义id为"@android:id/list"的Listview控件setContentView(R.layout.main);Cursor cursor = getContentResolver().query(Location.CONTENT_URI, mLocationProjection,null, null, null);//from跟to,非常有趣,把什么值显示在什么控件上。,是一个数组,支持多个绑定SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.provice_list_item, cursor,new String[] {Location.PROVICE, Location.CITY },new int[] { R.id.princeTextView,android.R.id.text1 });//给listview设置cursor有很多种方式,这是最简单的方式setListAdapter(adapter);/**下面的去掉注释后就ok*/////第二种方式//ListView mListView = (ListView)findViewById(android.R.id.list);//mListView.setAdapter(adapter);//View view = (View)findViewById(R.id.emptyView);////可以设置"当没有数据时"显示的布局//mListView.setEmptyView(view);/**上面去掉注释后就ok*/}}

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

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

例子下载

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

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. android利用httpclient实现post、get请求restful接口进行json和f
  3. Android(安卓)BLE蓝牙4.2数据透传操作
  4. Android(安卓)数据库开发之事务
  5. 取得Wear OS和Android对话:通过可穿戴数据层交换信息
  6. Android简易实战教程--第四十七话《使用OKhttp回调方式获取网络
  7. Android(安卓)大图片裁切时遇到的问题
  8. Android(安卓)sdcard媒体文件更新(程序控制刷新MediaStore数据库)
  9. 写了个Android聊天客户端框架,基本聊天功能、数据库、服务器都有

随机推荐

  1. Android中使用log4j
  2. gradle常见问题解决笔记
  3. android菜鸟学习笔记15----Android(安卓)
  4. xUtils3注解方式编程
  5. [android]转发andorid基础知识
  6. Android(安卓)LCD(四):LCD驱动调试篇
  7. Android(安卓)开发中涉及到的设计模式
  8. TextView 加链接所有方法
  9. 《Android学习指南》目录
  10. 【Google认证】STS:Android(安卓)Security