Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <EditText android:id="@+id/userFilter"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="Поиск" />
- <ListView
- android:id="@+id/userList"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- </ListView>
- </LinearLayout>
- package com.energo.myapplication;
- import android.database.Cursor;
- import android.database.SQLException;
- import android.database.sqlite.SQLiteDatabase;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.text.Editable;
- import android.text.TextWatcher;
- import android.widget.EditText;
- import android.widget.FilterQueryProvider;
- import android.widget.ListView;
- import android.widget.SimpleCursorAdapter;
- public class MainActivity extends AppCompatActivity {
- DatabaseHelper sqlHelper;
- SQLiteDatabase db;
- Cursor userCursor;
- SimpleCursorAdapter userAdapter;
- ListView userList;
- EditText userFilter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- userList = (ListView)findViewById(R.id.userList);
- userFilter = (EditText)findViewById(R.id.userFilter);
- sqlHelper = new DatabaseHelper(getApplicationContext());
- // создаем базу данных
- sqlHelper.create_db();
- }
- @Override
- public void onResume() {
- super.onResume();
- try {
- db = sqlHelper.open();
- userCursor = db.rawQuery("select * from " +
- DatabaseHelper.TABLE, null);
- String[] headers = new String[]{DatabaseHelper.COLUMN_QUES,
- DatabaseHelper.COLUMN_ANSW};
- userAdapter = new SimpleCursorAdapter(this,
- android.R.layout.two_line_list_item,
- userCursor, headers, new int[]{android.R.id.text1,
- android.R.id.text2}, 0);
- // если в текстовом поле есть текст, выполняем фильтрацию
- // данная проверка нужна при переходе от одной ориентации экрана
- к другой
- if(!userFilter.getText().toString().isEmpty())
- userAdapter.getFilter().filter(userFilter.getText().toString());
- // установка слушателя изменения текста
- userFilter.addTextChangedListener(new TextWatcher() {
- public void afterTextChanged(Editable s) { }
- public void beforeTextChanged(CharSequence s, int start, int
- count, int after) { }
- // при изменении текста выполняем фильтрацию
- public void onTextChanged(CharSequence s, int start, int
- before, int count) {
- userAdapter.getFilter().filter(s.toString());
- }
- });
- // устанавливаем провайдер фильтрации
- userAdapter.setFilterQueryProvider(new FilterQueryProvider() {
- @Override
- public Cursor runQuery(CharSequence constraint) {
- if (constraint == null || constraint.length() == 0) {
- return db.rawQuery("select * from " +
- DatabaseHelper.TABLE, null);
- }
- else {
- return db.rawQuery("select * from " +
- DatabaseHelper.TABLE + " where " +
- DatabaseHelper.COLUMN_QUES + " like ?", new
- String[]{"%" + constraint.toString() + "%"});
- }
- }
- });
- userList.setAdapter(userAdapter);
- }
- catch (SQLException ex){}
- }
- @Override
- public void onDestroy(){
- super.onDestroy();
- // Закрываем подключение и курсор
- db.close();
- userCursor.close();
- }
- }
- import android.database.SQLException;
- import android.database.sqlite.SQLiteOpenHelper;
- import android.database.sqlite.SQLiteDatabase;
- import android.content.Context;
- import android.util.Log;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- class DatabaseHelper extends SQLiteOpenHelper {
- private static String DB_PATH; // полный путь к базе данных
- private static String DB_NAME = "questions.db";
- private static final int SCHEMA = 2; // версия базы данных
- static final String TABLE = "otvet"; // название таблицы в бд
- // названия столбцов
- static final String COLUMN_ID = "_id";
- static final String COLUMN_QUES = "questions";
- static final String COLUMN_ANSW = "answers";
- private final Context myContext;
- DatabaseHelper(Context context) {
- super(context, DB_NAME, null, SCHEMA);
- this.myContext=context;
- DB_PATH =context.getFilesDir().getPath() + DB_NAME;
- }
- @Override
- public void onCreate(SQLiteDatabase db) {
- }
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- }
- void create_db(){
- InputStream myInput = null;
- OutputStream myOutput = null;
- try {
- File file = new File(DB_PATH);
- if (!file.exists()) {
- this.getReadableDatabase();
- //получаем локальную бд как поток
- myInput = myContext.getAssets().open(DB_NAME);
- // Путь к новой бд
- String outFileName = DB_PATH;
- // Открываем пустую бд
- myOutput = new FileOutputStream(outFileName);
- // побайтово копируем данные
- byte[] buffer = new byte[1024];
- int length;
- while ((length = myInput.read(buffer)) > 0)
- myOutput.write(buffer, 0, length);
- myOutput.flush();
- myOutput.close();
- myInput.close();
- }
- }
- catch(IOException ex){
- Log.d("DatabaseHelper", ex.getMessage());
- }
- }
- SQLiteDatabase open()throws SQLException {
- return SQLiteDatabase.openDatabase(DB_PATH, null,
- SQLiteDatabase.OPEN_READWRITE);
- }
- }
Add Comment
Please, Sign In to add comment