APIを起動して取得したリストを検索したい。
現在、indexof()を使用して検索していますが、単語の後にスペースを指定すると検索されますが、リストが適切に更新されません。
例:リスト1に2つのレコードがあります。Qtlistと用途2. android
「と」を検索すると、1のみが表示されますが、1と2の両方が表示されます。
このための私の機能
private ArrayList<BusinessDetails> GetSearchAdapterData(String searchKeyword) {
final ArrayList<BusinessDetails> listData = new ArrayList<BusinessDetails>();
String searchWith = "";
Log.i("BusinessArray ", "size is "
+ sitesList.getBusinessArray().size());
list.clear();
if (sitesList.getBusinessArray() != null
&& sitesList.getBusinessArray().size() > 0) {
for (int i = 0; i < sitesList.getBusinessArray().size(); i++) {
// String searchWith = "";
searchWith += sitesList.getBusinessArray().get(i).busName;
Log.i("businessName ", "Bus_Name is "
+ sitesList.getBusinessArray().get(i).busName
+ " startwith " + startsWith);
if (searchWith.toLowerCase().indexOf(searchKeyword.toLowerCase()) != -1) {
listData.add(sitesList.getBusinessArray().get(i));
}
}
Log.i("List data is inside loop call", "Listdata" + listData.size());
} else {
Log.i("sitesList.getBusinessArray() is zero", "size Zero");
}
return listData;
}
関数に加えた変更は次のとおりです。
private ArrayList<BusinessDetails> GetSearchAdapterData(String searchKeyword) {
final ArrayList<BusinessDetails> listData = new ArrayList<BusinessDetails>();
String searchWith = "";
Log.i("BusinessArray ", "size is "
+ sitesList.getBusinessArray().size());
if (sitesList.getBusinessArray() != null
&& sitesList.getBusinessArray().size() > 0) {
for (int i = 0; i < sitesList.getBusinessArray().size(); i++) {
searchWith += sitesList.getBusinessArray().get(i).busName;
}
for (int i = 0; i < sitesList.getBusinessArray().size(); i++) {
if (searchWith.matches(".*\\b" + searchKeyword + "\\b.*")) {
listData.add(sitesList.getBusinessArray().get(i));
Log.i("Match Word fromList", "" + listData.get(i).busName);
}
}
Log.i("List data is inside loop call", "Listdata" + listData.size());
} else {
Log.i("sitesList.getBusinessArray() is zero", "size Zero");
}
return listData;
}
どんな助けでもありがたいので、お願いします...助けてください