如果某些事情没有意义,请告诉我。我知道我的问题并不总是准确的。
我有一个listview,我试图按名称过滤。我有一个EditText字段,用户键入该字段以过滤列表视图。覆盖DirectoryListing类中的toString,允许进行正确的比较。
问题出在这里:说我有以下内容,每个都在listview中各自的行:“AC,BC,CD,AE”。现在在编辑文本字段中,如果输入B,则列表视图显示“AC”。 A将显示AC,BC。正如您所看到的,它将显示与输入内容匹配的项目数量,但它只显示自上而下的适当数量,而不是正确的项目。知道我做错了什么吗?这是我的代码。
//imports and some variable declaration
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.directory);
final Handler handler = new Handler() {
//fill the listview to start
}
};
listing = new ArrayList<DirectoryListing>();
this.adapter = new DirectoryAdapter(this, R.layout.dir_rows, listing);
setListAdapter(adapter);
ProgressDialog = ProgressDialog.show(DirectoryActivity.this, "Please wait...", "Retrieving data ...", true);
viewOrders = new Runnable() {
//execute filling the original listview
};
TextWatcher filterTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(s);
adapter.notifyDataSetChanged();
}
};
filterText = (EditText) findViewById(R.id.search_box);
filterText.addTextChangedListener(filterTextWatcher);
Thread thread = new Thread(null, viewOrders, "Background");
thread.start();
}
//other code
}