Как разбить запрос на более мелкие запросы и запускать их по одному в Android SQlite - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть просмотр списка, который должен показывать 25 строк данных, но с изображениями в базе данных, запрос превысил 1 МБ при достижении 13 строк и, как я здесь цитирую

Android SQLLite не может расти

Класс CursorWindow поддерживает чтение только 1 МБ данных на запрос:

#define MAX_WINDOW_SIZE (1024 * 1024)

, поэтому я подумал, что возможнобыло бы лучше, если бы я мог разделить запрос на более мелкие запросы и запускать их по одному, а затем показывать элементы в виде списка.

вот мои коды

mDB = new ChannelDB(this);

        String[] columns = {mDB.KEY_ID, mDB.KEY_POSTER, mDB.KEY_CHANNEL, mDB.KEY_PATH, mDB.KEY_DBLINK};
        String   table   = mDB.channelS_TABLE;

        c = mDB.getHandle().query(table, columns, null, null, null, null, null);

        startManagingCursor(c);

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.channelview,
                c,
                new String[] {mDB.KEY_POSTER, mDB.KEY_CHANNEL, mDB.KEY_DBLINK},
                new int[] {R.id.poster, R.id.channel, R.id.douban});

        adapter.setViewBinder(new ChannelViewBinder(this));

        channellist.setAdapter(adapter);

        channellist.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                c.moveToPosition(position);
                String xPath=c.getString(c.getColumnIndex(mDB.KEY_PATH));
                String xName=c.getString(c.getColumnIndex(mDB.KEY_CHANNEL));
                String xDBlink=c.getString(c.getColumnIndex(mDB.KEY_DBLINK));
                Intent intent = new Intent();
                intent.setClass(HDtvs.this,Showlist.class);
                intent .putExtra("path",xPath);
                Log.i("HDtvs", "path = " + xPath);
                intent .putExtra("cname",xName);
                intent .putExtra("dblink",xDBlink);
                startActivity(intent);
            }
        }); 

и какВы видите, mDB.KEY_POSTER - это изображение, хранящееся в базе данных.Я попытался сохранить путь в базе данных, но это не сработало, если вы можете предоставить способ сделать это с примером, который будет в равной степени полезен, thx

1 Ответ

0 голосов
/ 06 декабря 2011

Использовать лимит и смещение для пролистывания данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...