私は、Androidのページングライブラリ(https://developer.android.com/topic/libraries/architecture/paging.html)でページングを使用してrecyclerviewを実装しました。これは、データを取得し、後続のページを取得する上で正常に動作します。しかし、PagedListをフィルタリングする方法は?検索ウィジェットがあり、現在画面上のリストを検索したいとします。 PagedList.filter()
はList
を返し、PagedListAdapter.setList()
はList
を受け付けません。PagedListをフィルタリングできませんでしたか?
3
A
答えて
-1
次のコードを試してください。APIからロードされたArrayList内を検索するために役立つことを願っています。理解を深めるためにたくさんのコードを追加しました。
//Component Casting
SearchView search_channel = (SearchView) rootView.findViewById(R.id.search_channel);
//Component Interface
search_channel.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String mSearchText) {
if (mSearchText.length() > 2) {
search_channel.clearFocus();
}
return true;
}
@Override
public boolean onQueryTextChange(String searchString) {
if (mAdapter != null) {
mAdapter.getFilter().filter(searchString);
}
return true;
}
});
// Filter inside Adapter class
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
List<ChannelsData> filteredResult = getFilteredResults(charSequence);
FilterResults results = new FilterResults();
results.values = filteredResult;
results.count = filteredResult.size();
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
mChannelsList = (ArrayList<ChannelsData>) filterResults.values;
mAdapter.notifyDataSetChanged();
}
private List<ChannelsData> getFilteredResults(CharSequence constraint) {
if (constraint.length() == 0) {
return mChannelsListTemp;
}
List<ChannelsData> listResult = new ArrayList<ChannelsData>();
for (ChannelsData obj : mChannelsListTemp) {
if (obj.getStr_channelName().toLowerCase().trim().contains(constraint.toString().toLowerCase().trim())) {
listResult.add(obj);
}
}
return listResult;
}
};
}
+0
これは通常のList Adapter riteの場合ですか?私はPagedListAdapter(https://developer.android.com/topic/libraries/architecture/paging.html)を使用していますが、Filterableの実装でも、元のリストは変更できません。 –
+0
@JackyCoolheart私は私の答えはあなたを助けるかもしれないと思った。私は知っているかもしれません、あなたはこの問題を解決してください。将来の参考に役立ちます。どうもありがとう。ハッピーコーディング。 –
関連する問題
- 1. データテーブルをフィルタリングできませんか?
- 2. IDでポータブルストレージをフィルタリングできません
- 3. Primefacesデータテーブルをフィルタリングできません
- 4. MongoDBコレクションをフィルタリングできません
- 5. OpenCVでフィルタリングされた画像を保存できません
- 6. pagedlistを実装した後にビューページに戻るデータがありませんMVC
- 7. スイフトプレイグラウンド - フィルタリングされたUIImageをCGImageに変換できません
- 8. 日付をフィルタリングできますが、日時をフィルタできませんか?
- 9. Spark&Scala - RDDからヌル値をフィルタリングできません
- 10. Drupal 7のビューでカスタムフィールドをソートまたはフィルタリングできません
- 11. c#Lambdaを使用したSQL:複数の結果をフィルタリングできません
- 12. RxSwift/RxRealmでオブジェクトをフィルタリングできません
- 13. Spring-roo 1.2.1ではファインダリストをフィルタリングできません。
- 14. tablayoutアクティビティでリストビューをフィルタリングできません
- 15. CursorAdapterサブクラスでListViewをフィルタリングできません
- 16. Powershellでフィルタリングされたインデックスが見つかりません
- 17. TextWatcherはListViewをフィルタリングしていませんか?ここで
- 18. phpBB ip banはスパマーをフィルタリングしません、なぜですか?
- 19. jQuery Quicksand - フィルタリングしませんか?
- 20. CSVをインポートしているときに列をフィルタリングできません
- 21. dplyrでフィルタリングとフィルタリングを行いません
- 22. トレース/メッセージフィールドのプロパティをフィルタリングできません。
- 23. 剣道グリッド(角2+)数値をフィルタリングできません。列
- 24. パワーピボット、ピボットテーブルはフィルタリング後にフィールドを拡大できません
- 25. GrapheneDBでcsvをロードできませんでした。「外部リソースをロードできませんでした:」
- 26. XQueryで関数を使用できませんでした(関数を使用できませんでした)
- 27. Pagedlistはクリックされると次のページにリダイレクトされませんか?
- 28. 動的に作成されたプロキシのWCFメソッドをフィルタリングできません
- 29. フィルタリングされたテーブルにデフォルト値を与えることができません
- 30. フィルタリングするために受信者を登録できません。
こんにちはジャッキー、私のコードをご覧ください、それが助けてくれることを願います。ご不明な点がございましたら、私の答えの下にコメントを追加してください。私は手伝っています。ありがとう。 –
[PagedListはリストです](https://developer.android.com/reference/android/arch/paging/PagedList.html)。 – kalabalik