SwipeRefreshLayoutを使用してPullToRefreshメカニズムでListViewを使用します。私はSwipeRefreshLayoutを動的にコードをListViewに追加します。リフレッシュするときにListViewが自動的に更新される前に消えます
SwipeRefreshLayout swipeRefreshLayout = new SwipeRefreshLayout(listView.getContext());
if (listView.getParent() != null) {
final ViewGroup parent = (ViewGroup) listView.getParent();
final int index = parent.indexOfChild(listView);
parent.removeViewAt(index);
parent.addView(swipeRefreshLayout, index);
listView.setVisibility(View.VISIBLE);
}
swipeRefreshLayout.addView(listView);
swipeRefreshLayout.setOnRefreshListener(...) { }
上記のコードは、(リストビューは、現在であることを位置)親にswipeRefreshLayoutを追加し、その後swipeRefreshLayoutの子としてリストビューを追加します。
私がリフレッシュするときに、ネットワーク呼び出しが行われます。データが取得され、DBに格納され、CursorAdapterを使用してロードされます。
問題は:私はリフレッシュするために引くと
、私はすべての項目で第二のために空白の画面とUIの更新自体を参照してください。しかし、空白の画面が表示され、画面に触れると、クリックイベントに応答し、ListViewがすぐに表示されます。
データが取得されている間(PTRビューが表示されている間)常に表示され、新しいデータが利用可能になったら直ちに更新する必要があります。
私が間違っていることはありますか?私は、SwipeRefreshLayoutにrunnableをポストし、新しいデータをフェッチすることで、setRefreshingをtrueに実行しようとしました。私はこれが特にデータフェッチとは何の関係もないと思います。
ブランク画面が表示されている間は、アダプタが変更されていません(つまり、ListViewがまだ表示されているはずです)。
アイデア?
動的に追加するのではなく、XMLにSwipeRefreshLayoutを含めるようにコードを変更しましたが、まだ問題があります。 – sr09