您好,在我的应用程序中有一个列表视图和一个搜索部分。我需要做的是当我在搜索部分搜索一个单词时,它应该根据我搜索的单词排序相应的列表视图。用于对名称进行排序的代码,但我真正的问题是,如果我需要搜索单词,例如我需要搜索
Ramz super
这是我当前代码中的单个名称我需要按照正确的顺序搜索R,然后按顺序搜索名称。但我需要的是,如果我从超级我需要在listview中显示名称 Ramz super 。我可以这样做我的当前搜索代码如下所示
search_sort.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// Abstract Method of TextWatcher Interface.
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// Abstract Method of TextWatcher Interface.
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = search_sort.getText().length();
array_sort.clear();
contactnumber_sort.clear();
for (int i = 0; i < contactname.size(); i++) {
if (textlength <= contactname.get(i).length()) {
if (search_sort.getText()
.toString()
.equalsIgnoreCase(
(String) contactname.get(i).subSequence(
0, textlength))) {
array_sort.add(contactname.get(i));
contactnumber_sort.add(contactnumber.get(i));
}
}
}
System.out.println(array_sort);
myadp = new myAdapter(MobiMailActivity.this, array_sort, contactnumber_sort);
contactlist.setAdapter(myadp);
}
});
答案 0 :(得分:1)
尝试使用contains()
代替equalsIgnoreCase()
。其中datasetList
是我的自定义ArrayList<ContactList>
的对象。
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
String getSearchString = search.getText().toString();
if(datasetList != null && datasetList.size() > 0)
{
sortedList = new ArrayList<ContactDataSet>(); //new List sorted list
for (int i = 0; i < datasetList.size(); i++) {
if (datasetList.get(i).getName().contains(getSearchString)) {
sortedList.add(datasetList.get(i));
}
}
}
adapter.setnewList(sortedList);
lView.setAdapter(adapter);
}
试试这个让我知道。它正在为我工作。希望这可以帮助你