AndroidStudio Fragment1在MainActivity中,Fragment1上方有个edittext设置为搜素框,搜索框下方是listview,listview每一行显示数据库表course的数据,如何根据搜索框中输入的文本在listview中显示数据库表course的不同内容
时间: 2024-02-16 11:04:41 浏览: 70
你可以在搜索框中添加一个 TextWatcher 监听器,当用户输入文本时,触发监听器中的 onTextChanged 方法,然后在该方法中实现根据用户输入的文本搜索数据库表 course 的功能。具体的实现步骤如下:
1. 在 Fragment1 的布局文件中,添加一个 EditText 和一个 ListView。
2. 在 Fragment1 的代码中,初始化 EditText 和 ListView。
3. 给 EditText 添加一个 TextWatcher 监听器,在 onTextChanged 方法中根据用户输入的文本搜索数据库表 course。
4. 将搜索结果显示在 ListView 中。
下面是代码示例:
```java
public class Fragment1 extends Fragment {
private EditText mSearchEditText;
private ListView mListView;
private CourseAdapter mAdapter;
private List<Course> mCourseList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
mSearchEditText = view.findViewById(R.id.search_edit_text);
mListView = view.findViewById(R.id.list_view);
mCourseList = new ArrayList<>();
mAdapter = new CourseAdapter(getContext(), mCourseList);
mListView.setAdapter(mAdapter);
mSearchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
searchCourse(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
return view;
}
private void searchCourse(String keyword) {
mCourseList.clear();
SQLiteDatabase db = MyDatabaseHelper.getInstance(getContext()).getReadableDatabase();
Cursor cursor = db.query("course", null, "name like ?", new String[]{"%" + keyword + "%"}, null, null, null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
String teacher = cursor.getString(cursor.getColumnIndex("teacher"));
int credit = cursor.getInt(cursor.getColumnIndex("credit"));
Course course = new Course(name, teacher, credit);
mCourseList.add(course);
} while (cursor.moveToNext());
}
cursor.close();
mAdapter.notifyDataSetChanged();
}
}
```
在这个示例中,我们首先在 onCreateView 方法中初始化了 EditText 和 ListView,然后给 EditText 添加了一个 TextWatcher 监听器,在 onTextChanged 方法中调用 searchCourse 方法,根据用户输入的文本搜索数据库表 course。最后将搜索结果显示在 ListView 中。其中,CourseAdapter 是一个自定义的适配器,用于将 Course 对象显示在 ListView 中。
阅读全文