我有一个带字段名称,代码和移动设备的模型类数组列表。我想对所有人使用搜索视图。例如,如果我在名称搜索视图xyz和移动搜索视图9768中写下,则它给出了xyz和9768的所有匹配。
searchMasterList2.add(new SearchItemMaster("111", "222", "333"));
searchMasterList2.add(new SearchItemMaster("555", "333", "444"));
searchMasterList2.add(new SearchItemMaster("222", "444", "555"));
searchMasterList2.add(new SearchItemMaster("333", "111", "222"));
searchMasterList2.add(new SearchItemMaster("444", "555", "111"));
final android.support.v7.widget.SearchView searchView1 = (android.support.v7.widget.SearchView) getView().findViewById(R.id.item_name_edtv);
searchView1.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
is_click_search_item=true;
is_click_search_group=false;
}
});
searchView1.setOnQueryTextListener(this);
searchView1.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
is_click_search_item=true;
is_click_search_group=false;
}
});
final android.support.v7.widget.SearchView searchView2 = (android.support.v7.widget.SearchView) getView().findViewById(R.id.group_edtv);
searchView2.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
is_click_search_item=false;
is_click_search_group=true;
}
});
searchView2.setOnQueryTextListener(this);
searchView2.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
is_click_search_item=false;
is_click_search_group=true;
}
});
@Override
public boolean onQueryTextChange(String newText) {
final List<SearchItemMaster> filteredModelList = filter(searchMasterList2, newText);
Log.v("App", newText + ", " + searchMasterList2.size() + ", " + filteredModelList.size());
adapter.animateTo(filteredModelList);
recyclerView.scrollToPosition(0);
return false;
}
private List<SearchItemMaster> filter(List<SearchItemMaster> numbers, String input_text) {
input_text = input_text.toLowerCase();
ArrayList<SearchItemMaster> filteredCompanyList = new ArrayList<>();
for (SearchItemMaster searchItemMaster : numbers) {
if (is_click_search_group) {
final String moblieNo = searchItemMaster.getMoblieNo();
if (moblieNo.contains(input_text)) {
filteredCompanyList.add(searchItemMaster);
}
}
if (is_click_search_item) {
final String code = searchItemMaster.getCode().toLowerCase();
if (code.contains(input_text)) {
filteredCompanyList.add(searchItemMaster);
}
}
}
return filteredCompanyList;
}
您可以使用循环并比较每个项目值。
for ex。如果您在名称搜索中输入XYZ和9876,则循环如下: -
ArrayList<SearchItemMaster> resultArrayList = new ArrayList<>();
for(SearchItemMaster searchItemMasterObj : searchItemMasterList) {
if(searchItemMasterObj.getName().contains("Xyz") && searchItemMasterObj.getNumber().contains("9876")) {
resultArrayList.add(searchItemMasterObj);
}
}
然后您可以使用ResultArrayList显示结果。
希望这对您有帮助。:)
**我更改了以下代码,对我工作正常**
ArrayList<SearchItemMaster> searchMasterList2 = new ArrayList<>();
ArrayList<SearchItemMaster> filteredCompanyList1 = new ArrayList<>();
ArrayList<SearchItemMaster> filteredCompanyList2 = new ArrayList<>();
@Override
public boolean onQueryTextChange(String newText) {
if(is_click_search_item){
filteredCompanyList1.clear();
}
if(is_click_search_group){
filteredCompanyList2.clear();
}
final List<SearchItemMaster> filteredModelList = filter(searchMasterList2, newText);
Log.v("App", newText + ", " + searchMasterList2.size() + ", " + filteredModelList.size());
adapter.animateTo(filteredModelList);
recyclerView.scrollToPosition(0);
return false;
}
for (SearchItemMaster searchItemMaster : numbers) {
if (is_click_search_group) {
final String moblieNo = searchItemMaster.getMoblieNo().toLowerCase();;
if (moblieNo.contains(input_text)) {
filteredCompanyList2.add(searchItemMaster);
if(filteredCompanyList1.size()!=0) {
filteredCompanyList.add(searchItemMaster);
filteredCompanyList.retainAll(filteredCompanyList1);
}
else{
filteredCompanyList.add(searchItemMaster);
filteredCompanyList.retainAll(searchMasterList2);
}
}
}
if (is_click_search_item) {
final String code = searchItemMaster.getCode().toLowerCase();
if (code.contains(input_text)) {
filteredCompanyList1.add(searchItemMaster);
if(filteredCompanyList2.size()!=0){
filteredCompanyList.add(searchItemMaster);
filteredCompanyList.retainAll(filteredCompanyList2);
}
else{
filteredCompanyList.add(searchItemMaster);
filteredCompanyList.retainAll(searchMasterList2);
}
}
}
}