android – 从SQLite数据库中显示ListView中的100000个项目

android – 从SQLite数据库中显示ListView中的100000个项目,第1张

概述我正在尝试使用游标在ListView中显示预填充数据库(超过100000行)中的所有项目.它可以工作,但是应用程序启动并显示ListView需要几分钟的时间.有更快的方法吗?我读过有关FTS3表的内容,会有帮助吗? 我正在使用ArrayList< HashMap< String,String>>使用SimpleAdapter和自定义2行布局. 码: Cursor cursor = sDiction 我正在尝试使用游标在ListVIEw中显示预填充数据库(超过100000行)中的所有项目.它可以工作,但是应用程序启动并显示ListVIEw需要几分钟的时间.有更快的方法吗?我读过有关FTS3表的内容,会有帮助吗?

我正在使用ArrayList< HashMap< String,String>>使用SimpleAdapter和自定义2行布局.
码:

Cursor cursor = sDictionary.query("FTSgesla",new String[] {PodatkovnaBaza.KEY_WORD,PodatkovnaBaza.KEY_DEFinitioN},null,PodatkovnaBaza.KEY_WORD);    if (cursor == null)     {            // There are no results            mTextVIEw.setText("Empty");    }     else     {        HashMap<String,String> item;        if(cursor.movetoFirst())        {            do            {                item = new HashMap<String,String>();                item.put("line1",cursor.getString(0));                item.put("line2",cursor.getString(1));                List.add(item);            }            while(cursor.movetoNext());        }            sa = new SimpleAdapter(GlavniActivity.this,List,R.layout.result,new String[] { "line1","line2" },new int[] {R.ID.word,R.ID.deFinition});            mListVIEw.setAdapter(sa);            // define the on-click Listener for the List items            mListVIEw.setonItemClickListener(new OnItemClickListener() {                @OverrIDe                public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) {                   //do something                }            });        }
解决方法 没有更快的方法来加载100000个项目,并且您的用户也不需要同时查看所有项目,因此,使用线程逐个加载它们.

private class sqlTask extends AsyncTask<Integer,String[],Integer> {    @OverrIDe    protected Integer doInBackground(Integer... params) {        db.open();        Cursor c = db.getAllDataCursor();        for (c.movetoFirst(); !c.isAfterLast(); c.movetoNext()) {            String[] temp = new String[c.getColumnCount()];            for (int i = 0; i < temp.length; i++) {                temp[i] = c.getString(i);            }            publishProgress(thisTask,temp);        }        c.close();        db.close();    }    @OverrIDe    protected voID onProgressUpdate(String[]... values) {        super.onProgressUpdate(values);        // LOAD ONE ROW    }}
总结

以上是内存溢出为你收集整理的android – 从SQLite数据库中显示ListView中的100000个项目全部内容,希望文章能够帮你解决android – 从SQLite数据库中显示ListView中的100000个项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存