Java sqlite数据库在使用searchview搜索时更新Gridview

Java sqlite数据库在使用searchview搜索时更新Gridview,java,android,Java,Android,我能够创建一个数据库并用一些食物填充它!!并将其显示在gridview中查看 我想知道如何让搜索视图工作,这样当我搜索食物时,gridview也会更新 第二个问题是:我为gridview中的每个子项实现了一个McClickListener 公共类FoodList扩展了AppCompatActivity{ GridView gridView; static ArrayList<Food> list; FoodListAdapter adapter = null; SearchView

我能够创建一个数据库并用一些食物填充它!!并将其显示在gridview中查看

我想知道如何让搜索视图工作,这样当我搜索食物时,gridview也会更新

第二个问题是:我为gridview中的每个子项实现了一个McClickListener

公共类FoodList扩展了AppCompatActivity{

GridView gridView;
static ArrayList<Food> list;
FoodListAdapter adapter = null;
SearchView sv;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.food_list_activity);

    gridView = (GridView) findViewById(R.id.gridView);

    list = new ArrayList<>();
    adapter = new FoodListAdapter(this, R.layout.food_items, list);
    gridView.setAdapter(adapter);

   // get all data from sqlite
   Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM FOOD ");
    list.clear();
    while (cursor.moveToNext()){
        int id = cursor.getInt(0);
        String name = cursor.getString(1);
        String price = cursor.getString(2);
        byte[] image = cursor.getBlob(3);

        list.add(new Food(name, price, image, id));
    }
   adapter.notifyDataSetChanged();


    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Food food = list.get(position);
            Intent i = new Intent(FoodList.this,Details.class);
            i.putExtra("position", position);
            Bundle bundle = new Bundle();

            startActivity(i);
        }
    });

}

我希望你们能理解我在找什么,对不起,我的英语不好,非常感谢你们的帮助。谢谢你们。你们必须使用AutoCompleteTextView而不是简单的EditText。AutoCompleteTextView是一个可编辑的文本视图,当用户键入时,它会自动在下拉列表中显示建议列表,用户可以从中选择选择要替换编辑框内容的项目

auto_complete_textview = (AutoCompleteTextView)findViewById(R.id.auto_complete_textview);

             auto_complete_textview.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                    adapter.getFilter().filter(charSequence.toString());
                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });
现在创建一个适配器类,该类扩展BaseAdapter并实现Filterable接口,重写BaseAdapter的所有方法和Filterable接口的getFilter()方法,并执行所有您想要的操作

您可以在此链接上看到AutoCompleteTextView的示例

[

这是创建AutoCompleteTextView的xml代码

<AutoCompleteTextView
    android:id="@+id/auto_complete_text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Search"/>


显然,您应该使用主键来完成此操作。非常感谢您,经过一些更改,它可以完美地工作
<AutoCompleteTextView
    android:id="@+id/auto_complete_text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Search"/>