как правильно заполнить android-viewFlow из базы данных SQLite - PullRequest
0 голосов
/ 29 августа 2011

Я пытаюсь реализовать android-viewFlow (https://github.com/pakerfeldt/android-viewflow) в моем приложении, однако мне трудно заполнять каждую страницу правильно.

Проблема в том, что у меня есть база данных SQLite, и мне нужно иметь несколько представлений, которые будут соответствовать количеству строк, соответствующих моему запросу (обычно между 9 и 21), и каждое из этих представлений должно отображать значения из этого точного строки.

В viewFlow есть поле "sidebuffer", которое будет загружать количество просмотров в зависимости от значения этого "sidebuffer". Итак, как мне заполнить адаптер из SQLite и заставить "sidebuffer" соответствовать моему количеству строк. (Если «sidebuffer = 3», загруженные представления будут 2 * 3 + 1, а если 5, то будет загружено 2 * 5 + 1).

Есть ли минус в том, что жестко запрограммирован "sidebuffer = 100", даже если у меня никогда не будет даже такого большого количества отображаемых видов?

Причина, по которой я использую viewFlow, а не viewPager для совместимости с Android, заключается в том, что мне нужен индикатор заголовка, который реализован.

Заранее спасибо!

Прямо сейчас я создал новый метод в viewFlow.java

public setSidebuffer(int sidebuffer) {
    mSideBuffer = sidebuffer;
    init();
}

и в main_activity, где я настраиваю viewFlow, я вызываю метод следующим образом:

viewFlow = (ViewFlow) findViewById(R.id.viewflow);
AndroidVersionAdapter adapter = new AndroidVersionAdapter(this);
viewFlow.setAdapter(adapter, 3);
viewFlow.setSidebuffer(adabter.getSize() / 2);    // THIS IS THE THING

1 Ответ

0 голосов
/ 30 августа 2011

Боюсь, что установка бокового буфера, превышающего количество элементов в вашем адаптере, может привести к FC. В этом случае есть ошибка в android-viewflow, которую мне придется изучить. В любом случае, такой большой боковой буфер приведет к тому, что ваш адаптер создаст View для каждого элемента, что потребляет, возможно, много памяти. Вся идея с адаптером заключается в том, чтобы загружать виды только при необходимости.

Я думаю, что вы подходите к проблеме с неправильной точки зрения, когда вы стремитесь установить полный размер буфера в соответствии с размером вашего адаптера. Это не так, как это должно быть использовано. Реализуйте свой адаптер таким образом, чтобы при вызове getView (...) адаптер извлекал правильную строку из вашей базы данных, раздувал представление при необходимости и возвращал заполненное представление. Если эта процедура относительно быстрая, вы можете придерживаться низкого бокового буфера, такого как 2 или 3, потому что пользователь не сможет прокручивать быстрее, чем требуется для загрузки представлений в поток просмотра. Имеет ли это смысл?

Если вы предпочитаете использовать ViewPager, вы можете взглянуть на https://github.com/JakeWharton/Android-ViewPagerIndicator Эта библиотека получена из работы, проделанной в android-viewflow, чтобы включить индикаторы для ViewPager. Возможно, android-viewflow будет поддерживать это и в будущем.

...