Форум программистов, компьютерный форум 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
22.10.2014, 18:02  [ТС]     Что я неправильно делаю при реализации поиска?
Была ошибка в запросе, вы правы. Поменял на
Java
1
String sqlQuery1 = "SELECT * FROM city AS t1, region AS t2 WHERE t1.name LIKE '%' || ? || '%';";
и
Java
1
cursor1.getCount()
стал выдавать 42000.
Но все равно приложение не работает. Сейчас выдает ошибку:

10-22 12:10:00.905: E/AndroidRuntime(10353): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.citycode/com.example.citycode.MainActivity}: java.lang.NullPointerException

Что то не так видимо с реализацией Search... А что - без понятия... Очень нужна помощь.

Добавлено через 1 час 17 минут
Кстати, прописал логи после каждого действия, ошибка как я понял вылазит на этапе -
Java
1
2
        //Обновляем адаптер
        lvData.setAdapter(records);
в методе doMySearch(query);

Т.е. до обновления адаптера лог записывыыется, после уже нет... Может нельзя так обновлять адаптер? В чем тут дело может быть....

Добавлено через 3 часа 32 минуты
Продолжаю общаться сам с собой))) От помощи все еще не откажусь Получилось запустить код, но поиск работает на правильно, т.е. не выдает то что нужно, а весь список. Хотя в лог из Cursor записывается что нужно, т.е. запрос работает. Вот код:

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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.util.Log;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
 
public class MainActivity extends ActionBarActivity {
 
  ListView lvData,lvData1;
  DBHelper db;
  SimpleCursorAdapter scAdapter;
  Cursor cursor;
  Cursor cursor1;
  
  final String LOG_TAG = "myLogs";
  final String LOG_TAG1 = "myLogs1";
 
  /** 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) {
        //Ищем совпадения
        Log.d(LOG_TAG, "Before get the C");
        cursor1 = db.fetchRecordsByQuery(query);
        Log.d(LOG_TAG, "After get the C");
        String t = Integer.toString(cursor1.getCount());
        Log.d(LOG_TAG, t);
        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 };
 
        scAdapter = new SimpleCursorAdapter(this,
                R.layout.item, cursor1, from, to);
        Log.d(LOG_TAG, "Setting the adapter");
        //Обновляем адаптер
        logCursor(cursor1);
        lvData = (ListView) findViewById(R.id.listdata);
        lvData.setAdapter(scAdapter);
        Log.d(LOG_TAG, "Adapter was set");
      }
  
//вывод в лог данных из курсора
 void logCursor(Cursor c) {
   if (c != null) {
     if (c.moveToFirst()) {
       String str;
       do {
         str = "";
         for (String cn : c.getColumnNames()) {
           str = str.concat(cn + " = " + c.getString(c.getColumnIndex(cn)) + "; ");
         }
         Log.d(LOG_TAG1, str);
       } while (c.moveToNext());
     }
   } else
     Log.d(LOG_TAG1, "Cursor is null");
 }
  
 
  
     @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.options_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.setSubmitButtonEnabled(true);
        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();
  }
 
}
Сам поиск стал работать, но выдавать полный список, после того как я в метоже doMySearch определил заново - lvData = (ListView) findViewById(R.id.listdata);
Но как я говорил, поиск все равно работает неправильно, хотя с помощью метода logCursor в лог идут как раз правильные данные.
 
Текущее время: 10:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru