我需要在EditText的帮助下在分离的列表视图中执行搜索功能。我使用了edittext.addTextChangedListener()方法,我得到了解决方案。但EditText框只接受一个字符,当我试图输入第二个字符时,它会导致强制关闭。
我使用了以下代码。
edtSearch.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 cs, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
sAdapter.clear();
textlength = edtSearch.getText().length(); //getting text from EditText
Log.e("textlength",""+textlength);
array_name.clear(); array_friendid.clear(); array_status.clear(); array_image.clear();array_thumb.clear();
for (int i = 0; i < fullname.length; i++) {
if (textlength <= fullname[i].length()) {
if(edtSearch.getText().toString().equalsIgnoreCase((String)fullname[i].subSequence(0,textlength))) {
Log.e("arrayname",fullname[i]);
array_name.add(fullname[i]);
array_friendid.add(friendid[i]);
array_status.add(status[i]);
array_image.add(imageurl[i]);
array_thumb.add(thumbnailurl[i]);
array_header.add(fullname[i].substring(0, 1));
}
}
}
答案 0 :(得分:0)
你可以在下面放一个控件,
if(textlength > 3)
for (int i = 0; i < fullname.length; i++)
{
答案 1 :(得分:0)
我认为你可以利用Filter类来实现你想要的。只需覆盖列表适配器的getFilter()方法即可。以下是示例代码:
@Override
public Filter getFilter() {
if(mFilter == null){
mFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults;
//Do your search and initialize filterResults
...
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if(results != null && results.values != null) {
notifyDataSetChanged();
}
}
};
}
return mFilter;
}
Filter类的优点是它在单独的线程上执行过滤。