Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ul_mralex
2 / 2 / 0
Регистрация: 02.04.2013
Сообщений: 103
#1

SQLite поиск по двум значениям (динамический поиск) - Программирование Android

28.06.2016, 10:14. Просмотров 270. Ответов 0
Метки нет (Все метки)

Здравствуйте!
Помогите выполнить поиск в базе по двум значениям. Пока поиск осуществляется по одному реквизиту в двух полях MAR и OST, мне необходимо что бы поиск был по двум реквизитам и в двух полях одновременно...
С андроид студио и с "разработкой" приложения для телефона столкнулся впервые, поэтому разобраться сам в этой ситуации не могу, прошу вашей помощи.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
    ListView userList;
    EditText userFilter;
    DatabaseHelper sqlHelper;
    Cursor userCursor;
    SimpleCursorAdapter userAdapter;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tram);
 
        userList = (ListView)findViewById(R.id.userList);
        userFilter = (EditText)findViewById(R.id.userFilter);
        sqlHelper = new DatabaseHelper(getApplicationContext());
        // создаем базу данных
        sqlHelper.create_db();
    }
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void onResume(){
        super.onResume();
        try {
            sqlHelper.open();
            userCursor = sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE, null);
            String[] headers = new String[]{DatabaseHelper.COLUMN_MAR, DatabaseHelper.COLUMN_OST, DatabaseHelper.COLUMN_TIME,DatabaseHelper.COLUMN_NAPR};
            userAdapter = new SimpleCursorAdapter(this, R.layout.my_,
                    userCursor, headers, new int[]{R.id.textmar, R.id.textost, R.id.texttime, R.id.textnapr}, 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 sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE, null);
                    }
                    else {
 
                        return sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE +
                                        " where " + DatabaseHelper.COLUMN_MAR + " like ?" + " or "
                                        + DatabaseHelper.COLUMN_OST + " like ?",
                                new String[]{"%" + constraint.toString() + "%", "%" + constraint.toString() + "%"});
 
 
                        //return sqlHelper.database.rawQuery("select * from " + DatabaseHelper.TABLE + " where " +
                        //      DatabaseHelper.COLUMN_OST + " like ?", new String[]{"%" + constraint.toString() + "%"});
                    }
                }
            });
 
            userList.setAdapter(userAdapter);
        }
        catch (SQLException ex){}
    }
 
    @Override
    public void onDestroy(){
        super.onDestroy();
        // Закрываем подключения
        sqlHelper.database.close();
        userCursor.close();
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" android:orientation="vertical"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:weightSum="1">
    <EditText android:id="@+id/userFilter" android:layout_width="match_parent"
        android:layout_height="wrap_content" android:ems="10"
        android:hint="Введите первый параметр"
        />
 
    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Введите второй параметр" />
 
    <ListView
        android:id="@+id/userList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:focusable="true"
        android:focusableInTouchMode="true">
    </ListView>
 
</LinearLayout>
Добавлено через 21 час 31 минуту
Есть ли у кого примеры расширенного поиска в базе по нескольким параметрам в нескольких полях? Можно ли вообще это реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2016, 10:14     SQLite поиск по двум значениям (динамический поиск)
Посмотрите здесь:
Android Поиск по xml
Поиск файла Android
Android Поиск по фото
Поиск по listview Android
Android Поиск по дате в БД
Поиск в ширину Android
Android Не выполняется поиск в ListView
Поиск по лист вью Android
Поиск числа в диапазоне Android
Android Bluetooth. Поиск устройств
Android Autocompletetextview и сквозной поиск
Поиск как в браузере Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru