Как реализовать функцию поиска в моем приложении, имеющем базу данных sqlite?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Как реализовать функцию поиска в моем приложении, имеющем базу данных sqlite?

Сообщение Гость »


Я хочу добавить функцию поиска в свое приложение, но, к сожалению, я новичок в программировании и не совсем понимаю, как поместить функцию поиска во фрагмент моего приложения, подключенный к моей базе данных SQLite.

Я знаю, как отображать мои данные из sqlite в recyclerview, но понятия не имею, как добавить функцию, которая будет сортировать мои данные на основе поиска пользователя. Пожалуйста, помогите мне!

Это мой XML-файл.

Это фрагмент моего кода, показывающий мои данные.

пакет com.example.myapplication; импортировать android.app.Activity; импортировать android.database.Cursor; импортировать android.os.Bundle; импортировать androidx.annotation.NonNull; импортировать androidx.appcompat.widget.AppCompatButton; импортировать androidx.core.view.MenuItemCompat; импортировать androidx.fragment.app.Fragment; импортировать androidx.recyclerview.widget.GridLayoutManager; импортировать androidx.recyclerview.widget.LinearLayoutManager; импортировать androidx.recyclerview.widget.RecyclerView; импортировать android.view.LayoutInflater; импортировать android.view.Menu; импортировать android.view.MenuInflater; импортировать android.view.MenuItem; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать android.widget.SearchView; импортировать android.widget.Toast; импортировать org.checkerframework.checker.units.qual.A; импортировать java.util.ArrayList; общественный класс AttendanceFragment расширяет фрагмент { RecyclerView посещаемостьRecyclerView; MyDatabaseHelper myDatabaseHelper; ArrayList идентификатор, номер_студента, имя_студента, время, дата; Адаптер посещаемостиАдаптер посещаемости; @Override public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Пакет saveInstanceState) { // Раздуваем макет для этого фрагмента return inflater.inflate(R.layout.fragment_attendance, контейнер, false); } //показываем данные в recyclerView public void onViewCreated (Просмотр, Bundle saveInstanceState) { super.onViewCreated(просмотр, saveInstanceState); посещаемостьRecyclerView = view.findViewById(R.id.attendanceRecyclerView); myDatabaseHelper = новый MyDatabaseHelper(getActivity()); идентификатор = новый ArrayList(); Student_number = новый ArrayList(); Student_name = новый ArrayList(); время = новый ArrayList(); дата = новый ArrayList(); storeAttendanceInArrays(); посещаемостьAdapter = новый AttendanceAdapter(getActivity(), id, Student_number, Student_name, время, дата); посещаемостьRecyclerView.setAdapter(attendanceAdapter); посещаемостьRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); } общественный недействительный storeAttendanceInArrays () { Курсор курсора = myDatabaseHelper.readAttendanceData(); если (cursor.getCount() == 0) { Toast.makeText(getActivity(), «Нет истории посещений», Toast.LENGTH_SHORT).show(); } еще { в то время как (cursor.moveToNext()) { id.add(cursor.getString(0)); Student_number.add(cursor.getString(1)); Student_name.add(cursor.getString(2)); time.add(cursor.getString(3)); date.add(cursor.getString(4)); } } } } Это мой адаптер.

пакет com.example.myapplication; импортировать android.content.Context; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать android.widget.TextView; импортировать androidx.annotation.NonNull; импортировать androidx.recyclerview.widget.RecyclerView; импортировать java.util.ArrayList; публичный класс AttendanceAdapter расширяет RecyclerView.Adapter { частный контекст контекста; частный идентификатор ArrayList, номер студента, имя студента, время, дата; AttendanceAdapter (контекст контекста, идентификатор ArrayList, номер студента ArrayList, имя студента ArrayList, Время ArrayList, дата ArrayList) { this.context = контекст; this.id = идентификатор; this.student_number = Student_number; this.student_name = Student_name; это.время = время; this.date = дата; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup родительский, int viewType) { LayoutInflater layoutInflater = LayoutInflater.from(context); Просмотр представления = layoutInflater.inflate(R.layout.attendance_row, родительский, false); вернуть новый MyViewHolder(представление); } @Override public void onBindViewHolder(@NonNull MyViewHolder Holder, int Position) { Holder.numberTextView.setText(String.valueOf(student_number.get(position))); Holder.nameTextView.setText(String.valueOf(student_name.get(position))); Holder.timeTextView.setText(String.valueOf(time.get(position))); Holder.dateTextView.setText(String.valueOf(date.get(position))); } @Override public int getItemCount() { return id.size(); } публичный класс MyViewHolder расширяет RecyclerView.ViewHolder { TextView номерTextView, nameTextView, timeTextView, dateTextView; public MyViewHolder(@NonNull Посмотреть itemView) { супер (предметView); NumberTextView = itemView.findViewById(R.id.numberTextView); nameTextView = itemView.findViewById(R.id.nameTextView); timeTextView = itemView.findViewById(R.id.timeTextView); dateTextView = itemView.findViewById(R.id.dateTextView); } } } а это вспомогательные коды моей базы данных. Это для создания таблицы.

String query2 = "CREATE TABLE visitance_table(" + " id INTEGER PRIMARY KEY NOT NULL", + "номер_студента INT NOT NULL", + "имя_студента ТЕКСТ НЕ NULL", + "время ТЕКСТ НЕ NULL", + "дата ТЕКСТ НЕ NULL" + " );"; db.execSQL (запрос2); Это для отображения данных.

Курсор readAttendanceData() { Строковый запрос = "ВЫБРАТЬ * ИЗ таблицы посещаемости ORDER BY date DESC"; SQLiteDatabase db = this.getReadableDatabase(); Курсор курсор = ноль; если (дб != ноль) { курсор = db.rawQuery(запрос, ноль); } вернуть курсор; } Наконец, это мой новый код для поиска конкретных данных по дате, но я не знаю, как его использовать.

Курсор searchDate(строка даты) { SQLiteDatabase db = this.getReadableDatabase(); Строковый запрос = "ВЫБРАТЬ * ИЗ таблицы посещаемости LIKE '%" + дата + "%'"; Курсор курсора = db.rawQuery(query, null); вернуть курсор; } Мой ожидаемый результат заключается в том, что я могу добавить либо searchView, либо счетчик, который позволит пользователю выбирать, какие данные он хочет видеть в recyclerview
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»