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

Что я неправильно делаю при реализации поиска? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Запуск приложения по событию http://www.cyberforum.ru/android-dev/thread1280975.html
Здравствуйте. я новичок. поэтому вопросов много, а информации в инете маловато. Хочу сделать дополнение к экранной клавиатуре. Ну, например, зажимаешь надолго кнопку "1", стандартная клава прячется,...
Программирование Android Как добавить перенос строки? Пишу приложение для android, вставил гугл карты, но ни как не могу понять как делать перенос строки, ни \n \n\r \n - ничего не помогает, на карте всё равно всё пишется в одну строчку, как сделать... http://www.cyberforum.ru/android-dev/thread1280954.html
Компонент для отображения картинок Программирование Android
Господа подскажите как называется компонент отображающий картинки в приложении Вконтакте? Или там кастомный какой?
Программирование Android RelativeLayout расположение и связь объектов
Всем привет! Только начинаю осваивать Андроид, решил поэксперементировать с RelativeLayout и столкнулся с проблемой. Как связать более 4х элементов (допустим кнопок) друг с другом? Так, что бы они...
Программирование Android Структура layout. Расположение кнопок http://www.cyberforum.ru/android-dev/thread1280902.html
Что-то я начитался всего, но ничего подходящего не нашел. (Наверно не то читал). Нужно на экране сделать 9 кнопок. (Поле 3х3). Все кнопки должны быть квадратные и в ширину занимать весь экран....
Программирование Android Android Stuodi Gradle AndroidSdk not specified Здравствуйте! Хочу запустить готовый(100% рабочий проект в AndroidStudio). Получаю такую ошибку: Error:Android Source Generator: Android SDK is not specified В Инете внятного ответа не... подробнее

Показать сообщение отдельно
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 180

Что я неправильно делаю при реализации поиска? - Программирование Android

21.10.2014, 14:51. Просмотров 916. Ответов 15
Метки (Все метки)

Мучаюсь уже второй день. Подскажите что не так. Задача сделать поиск в справочнике. Все делаю по гайду - прописываю в манифесте, что текущая активити -это searchable activity, далее в коде вызываю Intent, с которого получаю запрос. Далее в классе которые обрабатывает базу данных пишу запрос с LIKE что бы извлечь все подходящие запросы. Проблема как я понял в методе
Java
1
doMySearch(query);
. Куда и как правльно мне вывести результаты поиска? В приведенном ниже коде (который не работает), запрос выводится в ListView с помощью адаптера.
Подскажите как сделать правильно, сил уже нет...
p.s. В качестве searchable activity используется текущая MainActivity (правильно ли это?):

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
83
84
85
86
87
88
89
90
91
package com.example.citycode;
 
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
 
public class MainActivity extends ActionBarActivity {
 
  private static final int CM_DELETE_ID = 1;
  ListView lvData;
  DBHelper db;
  SimpleCursorAdapter scAdapter;
  SimpleCursorAdapter records;
  Cursor cursor;
  Cursor cursor1;
 
  /** Called when the activity is first created. */
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    // открываем подключение к БД
    db = new DBHelper(this);
    db.open();
    
    // Get the intent, verify the action and get the query
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
    
    // получаем курсор
    cursor = db.getAllData();
    startManagingCursor(cursor);
    
    // Формируем столбцы сопоставления
    String[] from = new String[] { DBHelper.COLUMN_r_name, DBHelper.COLUMN_region, DBHelper.COLUMN_code};
    int[] to = new int[] { R.id.city_name, R.id.region_name, R.id.city_code };
 
    // создааем адаптер и настраиваем список
    scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to);
    lvData = (ListView) findViewById(R.id.listdata);
    lvData.setAdapter(scAdapter);
  }
  
  public void doMySearch(String query) {
        //Ищем совпадения
        cursor1 = db.fetchRecordsByQuery(query);
        startManagingCursor(cursor1);
        String[] from = new String[] { DBHelper.COLUMN_r_name, DBHelper.COLUMN_region, DBHelper.COLUMN_code};
        int[] to = new int[] { R.id.city_name, R.id.region_name, R.id.city_code };
 
        SimpleCursorAdapter records = new SimpleCursorAdapter(this,
                R.layout.item, cursor1, from, to);
        //Обновляем адаптер
        lvData.setAdapter(records);
      }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the options menu from XML
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.main, menu);
 
      // Get the SearchView and set the searchable configuration
      SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
      SearchView searchView = (SearchView) menu.findItem(R.id.action_settings).getActionView();
      // Assumes current activity is the searchable activity
      searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
      searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
 
      return true;
  }
 
  
  protected void onDestroy() {
    super.onDestroy();
    // закрываем подключение при выходе
    db.close();
  }
 
}
Из класса БД:
Java
1
2
3
4
5
6
      String sqlQuery1 = "SELECT * FROM city as t1, region as t2 WHERE t1.name LIKE" + "'%" + "?" + "%';";
      
         //Поиск запросом LIKE
      public Cursor fetchRecordsByQuery(String query) {
          return  myDataBase.rawQuery(sqlQuery1, new String[] {query});
      }
Вот такая ошибка выдается если я жму на поиск, вбиваю запрос и жму enter:

10-21 13:50:03.697: E/AndroidRuntime(12899): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.citycode/com.example.citycode.MainActivity}: java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru