私のアンドロイドアプリでは、SwipeRefreshLayoutを使ってListViewを更新したいのですが、onRefresh()メソッドの中でこのタスクの新しいスレッドを作成したいと思います。私のリフレッシュ方法はたくさんのファイルを取得しなければならないので、メインスレッドから呼び出されたときにアプリケーションを一時的にフリーズします。これは、SwipeRefrehLayoutを使用する目的を全面的に崩してしまいます(アプリケーションがリフレッシュしているとき、そうする)。メインスレッドの外部でSetRefreshing(false)を呼び出すことはできません。回避策?
最後の部分は私が問題を抱えている部分です。私はSwipeRefreshLayout.setRefreshing(false)を呼び出して、ファイルを取得した後でリフレッシュanmimationを停止したいと思っています。私はこれをやっている方法は、新しいスレッド内の同じリフレッシュ方法の終わりにsetRefreshingを呼び出すことであるが、問題は、私が作成する方法があります場合、私は思ってい
Only the original thread that created a view hierarchy can touch its views.
を言って、エラーを取得していますそれを行う最善の方法であるスレッド終了リスナーですが、残念ながら私は解決策なしでこれを数週間研究しました。
誰もがSwipeRefreshLayoutで使用する明白な選択肢はありますか?どんな助けでも大歓迎です。 `
public class Refresher implements Runnable {
SwipeRefreshLayout refreshLayout;
Context context;
public Refresher (Context c, SwipeRefreshLayout rl) {
refreshLayout = rl;
context = c;
}
@Override
public void run() {
//Call the method that fetches the files.
((CategoryMenu) context).RefreshCategories(CategoryMenu.SaveDirectory);
//Here's where my error gets thrown.
refreshLayout.setRefreshing(false);
//I understand why, but I don't know a good workaround.
}
}
`
から 例はAsyncTask – Denny
@Dennyこれは完全に働い使用してください!私はこの問題を解決として設定できるようにこれを答えとして追加できますか? – TheShadyColombian
確かに、私は答えとして投稿しました – Denny