Guest User

Untitled

a guest
Mar 21st, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:orientation="vertical">
  5.  
  6. <EditText android:id="@+id/userFilter"
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content"
  9. android:hint="Поиск" />
  10.  
  11. <ListView
  12. android:id="@+id/userList"
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content">
  15. </ListView>
  16. </LinearLayout>
  17.  
  18. package com.energo.myapplication;
  19. import android.database.Cursor;
  20. import android.database.SQLException;
  21. import android.database.sqlite.SQLiteDatabase;
  22. import android.support.v7.app.AppCompatActivity;
  23. import android.os.Bundle;
  24. import android.text.Editable;
  25. import android.text.TextWatcher;
  26. import android.widget.EditText;
  27. import android.widget.FilterQueryProvider;
  28. import android.widget.ListView;
  29. import android.widget.SimpleCursorAdapter;
  30. public class MainActivity extends AppCompatActivity {
  31. DatabaseHelper sqlHelper;
  32. SQLiteDatabase db;
  33. Cursor userCursor;
  34. SimpleCursorAdapter userAdapter;
  35. ListView userList;
  36. EditText userFilter;
  37.  
  38. @Override
  39. protected void onCreate(Bundle savedInstanceState) {
  40. super.onCreate(savedInstanceState);
  41. setContentView(R.layout.activity_main);
  42. userList = (ListView)findViewById(R.id.userList);
  43. userFilter = (EditText)findViewById(R.id.userFilter);
  44. sqlHelper = new DatabaseHelper(getApplicationContext());
  45. // создаем базу данных
  46. sqlHelper.create_db();
  47. }
  48. @Override
  49. public void onResume() {
  50. super.onResume();
  51. try {
  52. db = sqlHelper.open();
  53. userCursor = db.rawQuery("select * from " +
  54. DatabaseHelper.TABLE, null);
  55. String[] headers = new String[]{DatabaseHelper.COLUMN_QUES,
  56. DatabaseHelper.COLUMN_ANSW};
  57. userAdapter = new SimpleCursorAdapter(this,
  58. android.R.layout.two_line_list_item,
  59. userCursor, headers, new int[]{android.R.id.text1,
  60. android.R.id.text2}, 0);
  61.  
  62. // если в текстовом поле есть текст, выполняем фильтрацию
  63. // данная проверка нужна при переходе от одной ориентации экрана
  64. к другой
  65. if(!userFilter.getText().toString().isEmpty())
  66.  
  67. userAdapter.getFilter().filter(userFilter.getText().toString());
  68.  
  69. // установка слушателя изменения текста
  70. userFilter.addTextChangedListener(new TextWatcher() {
  71.  
  72. public void afterTextChanged(Editable s) { }
  73.  
  74. public void beforeTextChanged(CharSequence s, int start, int
  75. count, int after) { }
  76. // при изменении текста выполняем фильтрацию
  77. public void onTextChanged(CharSequence s, int start, int
  78. before, int count) {
  79.  
  80. userAdapter.getFilter().filter(s.toString());
  81. }
  82. });
  83.  
  84. // устанавливаем провайдер фильтрации
  85. userAdapter.setFilterQueryProvider(new FilterQueryProvider() {
  86. @Override
  87. public Cursor runQuery(CharSequence constraint) {
  88.  
  89. if (constraint == null || constraint.length() == 0) {
  90.  
  91. return db.rawQuery("select * from " +
  92. DatabaseHelper.TABLE, null);
  93. }
  94. else {
  95. return db.rawQuery("select * from " +
  96. DatabaseHelper.TABLE + " where " +
  97. DatabaseHelper.COLUMN_QUES + " like ?", new
  98. String[]{"%" + constraint.toString() + "%"});
  99. }
  100. }
  101. });
  102.  
  103. userList.setAdapter(userAdapter);
  104. }
  105. catch (SQLException ex){}
  106. }
  107. @Override
  108. public void onDestroy(){
  109. super.onDestroy();
  110. // Закрываем подключение и курсор
  111. db.close();
  112. userCursor.close();
  113. }
  114. }
  115.  
  116. import android.database.SQLException;
  117. import android.database.sqlite.SQLiteOpenHelper;
  118. import android.database.sqlite.SQLiteDatabase;
  119. import android.content.Context;
  120. import android.util.Log;
  121. import java.io.File;
  122. import java.io.FileOutputStream;
  123. import java.io.IOException;
  124. import java.io.InputStream;
  125. import java.io.OutputStream;
  126.  
  127. class DatabaseHelper extends SQLiteOpenHelper {
  128. private static String DB_PATH; // полный путь к базе данных
  129. private static String DB_NAME = "questions.db";
  130. private static final int SCHEMA = 2; // версия базы данных
  131. static final String TABLE = "otvet"; // название таблицы в бд
  132.  
  133. // названия столбцов
  134. static final String COLUMN_ID = "_id";
  135. static final String COLUMN_QUES = "questions";
  136. static final String COLUMN_ANSW = "answers";
  137.  
  138.  
  139. private final Context myContext;
  140.  
  141. DatabaseHelper(Context context) {
  142.  
  143. super(context, DB_NAME, null, SCHEMA);
  144. this.myContext=context;
  145. DB_PATH =context.getFilesDir().getPath() + DB_NAME;
  146. }
  147.  
  148. @Override
  149. public void onCreate(SQLiteDatabase db) {
  150. }
  151. @Override
  152. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  153.  
  154. }
  155.  
  156. void create_db(){
  157. InputStream myInput = null;
  158. OutputStream myOutput = null;
  159. try {
  160. File file = new File(DB_PATH);
  161. if (!file.exists()) {
  162. this.getReadableDatabase();
  163. //получаем локальную бд как поток
  164. myInput = myContext.getAssets().open(DB_NAME);
  165. // Путь к новой бд
  166. String outFileName = DB_PATH;
  167.  
  168. // Открываем пустую бд
  169. myOutput = new FileOutputStream(outFileName);
  170.  
  171. // побайтово копируем данные
  172. byte[] buffer = new byte[1024];
  173. int length;
  174. while ((length = myInput.read(buffer)) > 0)
  175. myOutput.write(buffer, 0, length);
  176.  
  177.  
  178. myOutput.flush();
  179. myOutput.close();
  180. myInput.close();
  181. }
  182. }
  183. catch(IOException ex){
  184. Log.d("DatabaseHelper", ex.getMessage());
  185. }
  186. }
  187. SQLiteDatabase open()throws SQLException {
  188.  
  189. return SQLiteDatabase.openDatabase(DB_PATH, null,
  190. SQLiteDatabase.OPEN_READWRITE);
  191. }
  192.  
  193. }
Add Comment
Please, Sign In to add comment