최근에 나타난 이상한 문제가 있습니다. 처음에는 ListView에 모든 항목을로드하고있었습니다. 그것은 모두 잘 스크롤하고있었습니다. 항목을 클릭 할 수 있었고 모두 잘 작동했습니다. 여기ListView에서 TabHost 스크롤/클릭 문제가 발생했습니다.
if(pos == getCount() - 1){
Log.i("Load", "Load database");
load_database(getCount(), 5);
}
과이 문제를 잘 그 후 나타난
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은()이다 :
그런 다음 내 어댑터의 getView에서 나는 덧붙였다. 로드 할 때 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() ... bringToFront ... 등 load_database 후. 그러나 아무것도 도움이되지 않았습니다.
편집 2 코드 조각을 거의 잊어 버렸습니다.
tabHost.setCurrentTab(1);
tabHost.setCurrentTab(0);
몇 가지 이유로 TabHost에 문제가 있습니다. 내 ListView는 모든 탭에서 공유됩니다. 뷰를 처음로드 할 때 아무것도 표시되지 않았습니다. 그래서 두 번째 탭에서 첫 번째 탭으로 전환해야했습니다.