Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 从SQLite数据库中显示ListView中的100000个项目大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_618_1@
我正在尝试使用游标在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个项目所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。