0
我創建了一個列表視圖,其中包含多個行。每行,具有輸入樣式的Edittext都是數字,Textview顯示listview中所有editext的總值。我還在上面創建了一個搜索框。我想根據列表的特定字段實現搜索功能。我怎樣才能做到這一點?任何幫助將不勝感激。 就像是:
在ListView中使用Edittext進行搜索在
我創建了一個列表視圖,其中包含多個行。每行,具有輸入樣式的Edittext都是數字,Textview顯示listview中所有editext的總值。我還在上面創建了一個搜索框。我想根據列表的特定字段實現搜索功能。我怎樣才能做到這一點?任何幫助將不勝感激。 就像是:
在ListView中使用Edittext進行搜索在
試試這個
searchView.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
return true;
}
});
addTextChangeListener();
現在創建這個方法
private void addTextChangeListener() {
searchView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence query, int start, int before, int count) {
query = query.toString().trim().toLowerCase();
final ArrayList<CityDataModel> filteredList = new ArrayList<>();
final CharSequence finalQuery = query;
new Thread(new Runnable() {
@Override
public void run() {
// Clear the filter list
filteredList.clear();
// If there is no search value, then add all original list items to filter list
if (TextUtils.isEmpty(finalQuery)) {
filteredList.addAll(cities);
} else {
// Iterate in the original List and add it to filter list...
for (CityDataModel item : cities) {
if (item.getCity_name().toLowerCase().contains(finalQuery.toString().toLowerCase())
) {
// Adding Matched items
filteredList.add(item);
}
}
}
// Set on UI Thread
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
// Notify the List that the DataSet has changed...
adapter = new SearchCityAdapter(SearchCityClass.this, filteredList);
recyclerSearchCity.setAdapter(adapter);
}
});
}
}).start();
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
編輯文本的變化時就會發生這種方法。這是我的樣品。你可以修改爲你的自我。
et_search.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// professional_add_List.contains(s);
}
@Override
public void afterTextChanged(Editable s) {
// String text = et_search.getText().toString().toLowerCase(Locale.getDefault());
addpartnerAdapter.getFilter().filter(s.toString());
if (addpartnerAdapter.isEmpty()) {
lst_professional.setVisibility(View.GONE);
txt_identifier.setVisibility(View.VISIBLE);
} else {
lst_professional.setVisibility(View.VISIBLE);
txt_identifier.setVisibility(View.GONE);
}
}
});
您想要搜索哪些值?發佈您的代碼 –
使用左側Textview中的值進行搜索。 我的英文不好,希望你明白我的意思 –