Java sqlite数据库在使用searchview搜索时更新Gridview
我能够创建一个数据库并用一些食物填充它!!并将其显示在gridview中查看 我想知道如何让搜索视图工作,这样当我搜索食物时,gridview也会更新 第二个问题是:我为gridview中的每个子项实现了一个McClickListener 公共类FoodList扩展了AppCompatActivity{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;
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"/>