У меня странная проблема, которая недавно появилась. Сначала я загружал все элементы в моем ListView. Прокручивалось все нормально. Элементы были кликабельны, и все работало нормально.
Затем в getView моего адаптера я добавил, что:
if(pos == getCount() - 1){
Log.i("Load", "Load database");
load_database(getCount(), 5);
}
а вот load_database ()
private void load_database(long offset, long count) {
ArrayList<VKContent> objs = BaseApplication.db.get_all(Message.class, MessageHandler.COLUMN_MAILBOX + " = " + mailbox, count, offset);
for(VKContent obj: objs){
adp.add((Message)obj);
}
}
Проблема появилась сразу после этого. При загрузке он вызывает load_database один раз, и все хорошо. ListView работает нормально. Клики обрабатываются. Но как только я достигаю "pos == getCount () - 1". Он загружает новые данные, но теперь невозможно щелкнуть элементы. Когда я прокручиваю и делаю вздрагивание, прикосновение к экрану не останавливает вздрагивание. Когда я пытаюсь прокрутить во время вздрагивания, это не имеет никакого эффекта, пока вздрагивание не прекратилось.
Если я переключаюсь на другую вкладку, поведение просмотра списка восстанавливается. Если я попытаюсь использовать шарик прокрутки, чтобы сфокусировать предметы, вернется и нормальное поведение.
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/tabhost">
<LinearLayout
android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1">
<LinearLayout android:id="@+id/tab2"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<ListView android:id="@+id/lv"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:clickable="true" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
Редактировать
Я пытался сделать недействительными (), forceLayout (), requestLayout (), isFocusable () ... takeToFront ... и другие после load_database. Но ничего не помогло.
Edit2
Почти забыл этот кусок кода.
tabHost.setCurrentTab(1);
tabHost.setCurrentTab(0);
По некоторым причинам существует проблема с TabHost. Мой ListView доступен для всех вкладок. Когда представление загружается впервые, оно ничего не отображает. Поэтому мне пришлось переключиться со второй на первую вкладку.