ActionBar上的SearchView:如何使用自定义适配器在自定义Listview上执行SQLite搜索?

时间:2015-04-13 02:30:15

标签: android android-actionbar searchview

我有一个包含多个ListView的自定义EditText,我想让搜索功能仅与EditText中的一个一起使用。

到目前为止,我能够在SearchView上实现ActionBar,但我不知道如何使用onQueryTextChange / Submit方法在我的SQLite数据库中进行搜索。

我查看了youtube和google上的所有内容,但在使用自定义列表视图时无法找到任何明确有用的信息。我能够找到一些很好的例子来处理一个没有SQLite数据的简单列表视图,但是我不知道如何根据我的情况调整这些...我真的需要帮助,请!!

如果您需要任何其他信息,请随时提出,我会立即发布。非常感谢你!

CODE

我的customAdapter视图

public View getView(int position, View view, ViewGroup parent) {
    Cliente cliente = lista.get(position);

    if(view == null)
    {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.single_row_listar_cliente, null);
    }

    TextView txtNome = (TextView) view.findViewById(R.id.tv_cliente_nome);
    txtNome.setText(cliente.getNome());

    TextView txtSobrenome = (TextView) view.findViewById(R.id.tv_cliente_sobrenome);
    txtSobrenome.setText(cliente.getSobrenome());

    //
    Button btn = (Button) view.findViewById(R.id.btn_cliente_opcoes);


    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("working", "k");
            //Mensagem.Msg(ListarCliente, "oi",1000);
        }
    });


    return view;
}

2 个答案:

答案 0 :(得分:2)

如果使用ArrayAdapter,它提供了简单的方法getFilter(),它将根据搜索文本过滤列表中的数据。 但要使用与数据库相同的功能,您需要使用 CursorAdapter Documentation

提供方法setFilterQueryProvider(filterQueryProvider) 您需要在数据库类中传递文本和根据查询的位置。 请参阅下面的教程,其中提供了相应的实现:

http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html

希望这有帮助!

答案 1 :(得分:0)

我无法从您的问题中判断您是在尝试提供用户输入时下拉的建议列表,还是只想通过运行查询并在UI中显示结果来处理搜索

在任何一种情况下,您都需要编写内容提供商。如果您使用SQLite,您应该已经熟悉内容提供程序,但如果没有,您可能应该Start Here

如果您尝试填充建议列表,只需扩展SearchRecentSuggestionsProvider即可轻松定义内容提供商。有关此here

的大量信息