所以我有一个从在线服务器下载到应用程序中的数据表,我有一个搜索按钮,点击它会弹出一个 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 还是我应该使用另一种方式在我的表中搜索?