所以我有一个数据表,我从在线服务器下载到应用程序中,我有一个搜索按钮,点击后会显示一个AlertDialog,我希望用户输入搜索文本,它看起来像这样:
public void buscar() {
final EditText myView = new EditText(getApplicationContext());
myView.setHint("Introduce texto aqui");
AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
alt_bld.setView(myView);
alt_bld.setMessage("Introduce el texto o nombre del medio que deseas buscar:")
.setCancelable(false)
.setPositiveButton("Listo", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
TextWatcher filterTextWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
public void onTextChanged(CharSequence s,int start, int before,int count)
{
}
@Override
public void afterTextChanged(Editable arg0)
{
}
};
buscartext = myView.getText();
myView.addTextChangedListener(filterTextWatcher);
AlertDialog alert = alt_bld.create();
alert.setTitle("Buscar");
alert.setIcon(R.drawable.searcha);
alert.show();
}
它通过显示警告对话框并询问搜索文本的方式工作,但显然我现在不知道它是如何工作的,我在onTextChanged和afterTextChanged中尝试了这个:
for(webResult currentItem: arrayOfWebData)
{
//Check if the Medio property of the current item matches the search
if(currentItem.Medio.equals(s))
{
FilteredArrayOfWebItems.add(currentItem);
}
}
// here call my list adapter to display items
webResult是来自互联网的表,aFilteredArrayOfWebItems是搜索产生的列表,但它不起作用。我知道currentItem.Medio.equals(s)只检查我的表中的一列,我需要搜索多个以上的行,因为.equal,该行不适合搜索。如何进行不区分(%) searchtext%)搜索?并使用此textWatcher或我应该使用其他方式在我的表中搜索?