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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Запуск приложения по событию http://www.cyberforum.ru/android-dev/thread1280975.html
Здравствуйте. я новичок. поэтому вопросов много, а информации в инете маловато. Хочу сделать дополнение к экранной клавиатуре. Ну, например, зажимаешь надолго кнопку "1", стандартная клава прячется, появляется моя, скажем ...кнопки с уже готовыми выражениями. и вот не пойму как это реализовать. За клавиатурой ведь должен кто-то следить.служба?сервис? чтоб, по нужному событию запуститлось мое...
Android Как добавить перенос строки? Пишу приложение для android, вставил гугл карты, но ни как не могу понять как делать перенос строки, ни \n \n\r \n - ничего не помогает, на карте всё равно всё пишется в одну строчку, как сделать перенос на подобие <br>??? mMap.addMarker(new MarkerOptions().position(new LatLng(59.961159, 30.291961)).title("Название точки").snippet("Станция метро \"Чкаловская\", Устройство расположено в... http://www.cyberforum.ru/android-dev/thread1280954.html
Компонент для отображения картинок Android
Господа подскажите как называется компонент отображающий картинки в приложении Вконтакте? Или там кастомный какой?
Android RelativeLayout расположение и связь объектов
Всем привет! Только начинаю осваивать Андроид, решил поэксперементировать с RelativeLayout и столкнулся с проблемой. Как связать более 4х элементов (допустим кнопок) друг с другом? Так, что бы они делили равное пространство на экране (БЕЗ использования LinearLayout и TableLayout). Буду благодарен за советы и помощь! У меня выходит их связывать подобными образами:
Android Структура layout. Расположение кнопок http://www.cyberforum.ru/android-dev/thread1280902.html
Что-то я начитался всего, но ничего подходящего не нашел. (Наверно не то читал). Нужно на экране сделать 9 кнопок. (Поле 3х3). Все кнопки должны быть квадратные и в ширину занимать весь экран. Так как ширина экрана на разных устройствах разная не получается задать dp для ширины и высоты и занять всю ширину экрана. Как быть? Заранее спасибо.
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
Сообщений: 177
21.10.2014, 14:51     Что я неправильно делаю при реализации поиска?
Мучаюсь уже второй день. Подскажите что не так. Задача сделать поиск в справочнике. Все делаю по гайду - прописываю в манифесте, что текущая активити -это 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.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru