2 momo1199 Momo1199 于 2013.01.11 16:27 提问

SQLite读取全部数据

table中一共有11条记录,每个记录有三个内容"name","address","city"。现在要获取这些记录,但是我写的代码只能显示出一条记录,不知道怎么实现显示全部记录?

public void readData(View v)
    {
        DatabaseClass mydb = new DatabaseClass(this);
        SQLiteDatabase readdata = mydb.getReadableDatabase();
        TextView tv = (TextView)findViewById(R.id.readtext);
        Cursor c = readdata.rawQuery("select * from mylistdata", null);
        int[] elementId = {R.id.textView1, R.id.textView2, R.id.textView3}; 
        if(c !=null)
        {
            c.moveToFirst();
            while(c.isAfterLast() == false)
            {
                listData = new ArrayList<GenericListItem>();
                String name = c.getString(c.getColumnIndex(DatabaseClass.NAME));
                String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS));
                String city = c.getString(c.getColumnIndex(DatabaseClass.CITY));
                listData.add(new GenericListItem(new String[]{name,address,city}));
                listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId);
                result.setAdapter(listAdapter);
                c.moveToNext();
            }



        }

3个回答

cjiiing
cjiiing   2013.01.11 16:34
已采纳

要把Adapter放到循环前初始化,然后最后再加载(调用setAdapter()),否则每次都对ListView设置了一个新的Adapter,当然只能看到最后一次设置的值了

Momo1199
Momo1199 谢谢
5 年多之前 回复
redCoral_
redCoral_   2013.01.11 16:51

在while循环外面初始化listData ArrayList:

    c.moveToFirst();
    listData = new ArrayList<GenericListItem>();
    while(c.isAfterLast() == false)
    {
       // add value here to listData
      c.moveToNext();
    }
   // set  listData datasource to GenericListAdapter here

   listAdapter = new GenericListAdapter(getApplicationContext(), 
              R.layout.list_layout, listData, elementId);

   result.setAdapter(listAdapter);
Momo1199
Momo1199 你的答案也对,谢谢
5 年多之前 回复
O_1001_O
O_1001_O   2013.01.11 16:57
listData = new ArrayList<GenericListItem>();  //moved out of loop

 while(c.isAfterLast() == false)
        {
            String name = c.getString(c.getColumnIndex(DatabaseClass.NAME));
            String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS));
            String city = c.getString(c.getColumnIndex(DatabaseClass.CITY));
            listData.add(new GenericListItem(new String[]{name,address,city}));
            listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId);
            c.moveToNext();
        }

        result.setAdapter(listAdapter);  // moved out of loop

我认为是循环的问题,你这样写看看

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
QT sqlite3数据库读取、容器操作、文件读写——学习笔记。
直接上代码 #include "dbpoi.h" #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { QApplicati
数据库SQLite 数据大量存储 和快速读取 链表查询的优化 使用gosn
使用gson 将链表存储的优化转化: private Gson gson = new Gson(); private void readStr(){ List contacts = null; if (!TextUtils.isEmpty(str) && !init) { contacts = gson.fromJson(str, new TypeToken>()
python sqlite 读取数据
#connect to db sqlite_conn = sqlite3.connect("image_link.db") sqlite_conn.text_factory = str #get cursor cursor = sqlite_conn.cursor() #create table cursor.execute('''create table if not exists
C# SQLite通用读写操作方法
///         /// 执行SQL语句,返回影响的记录数         ///         /// SQL语句         /// 影响的记录数         public static int ExecuteSql(string SQLString)         {             lock (_lock)             {
Android Sqlite数据库常用操作
很久前也写过一篇Android数据库操作相关内容。在正式项目中,我们通常会使用数据库开源框架如GreenDao来对数据库进行操作。 感觉很久没有直接使用Sql语句了,这几天有时间,就温习了下相关知识。 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统.是开源的,高效率的,可嵌入且程序驱动的数据库。 使用起来非常方便,因为其API简单易用,代码量少。 1,数据类型有: 1).
SQLite数据库的数据读取和写入
SQLite数据库是Android自带的轻量级关系型数据库,支持SQL语言,用来存储大量的数据,并且能够对数据进行使用、更新、维护等操作。
Sqlite数据库分页查询(ListView分页显示数据)
今天项目中遇到个问题,之前数据量不算多的时候,ListView显示正常,但是当数据量很大得分时候,进入画面,显示数据比较慢, 而且不能放在UI线程中去拿数据,用子线程去拿把,画面出来了,但是数据要等很久才会出来,因此,这样给人的体验很不好,算不上好的设计。 因此,查了一下,关于数据库分页ListView分页。 对于ListView分页,不管是本地数据查询,还是网络数据获取,都应该是常
SQLite数据库读取
打开数据库文件 sqlite3 xxx.db 此时命令提示符变成了&amp;gt; 显示有多少个表 .tables 显示所有的建表语句, 可以得知表的结构 .schema 显示某个表的具体内容 select * from 表名; 将输出导入文件中 .output 文件名 此后所有的命令输出都会重定向到文件 退出终端 .exit firefox上有个SQLite Ma...
C# 使用SQLite数据库 之 读写数据库
读写数据库并在窗体(Form)中显示其数据,其方式为: 读: Database(SQLite) -> DataAdapter -> DataSet -> DataGridView 写: Database(SQLite)    1、假设现有数据库表student,其字段如下: ID(自增字段,主键)
取得sqlite数据库里所有的表名 &复制表
取得sqlite数据库里所有的表名 查询table,type 段是'table',name段是table的名字, so: select name from sqlite_master where type='table' order by name; 查询indices,type段是'index', name 是index的名字,tbl_name是index所拥有的table的名字