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

Поиск в андроид справочнике - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android TableLayout, как поставить border? http://www.cyberforum.ru/android-dev/thread1280771.html
как поставить border Добавлено через 11 минут не ну маргинами можно например, но чож это получается вот например таблица с эелемнетмами 1 2 3 3 4 5 вот значит 1 ставим маргин=1, а двойке получается маргины кроме левого Добавлено через 2 часа 21 минуту
Программирование Android Clustering markers on the map v2 Народ, кто нибудь занимался класторизацией на карте? Я тут бьюсь весь день пытаюсь сделать что бы работало как надо, но все никак не выходит, может кто пример скинет какой нибудь? Пожалуйста, уже сил нет... http://www.cyberforum.ru/android-dev/thread1280494.html
Программирование Android Не работают insert на устройстве
Возникла проблема со вставкой в таблицу. На эмуляторе insert работает, а на устройстве нет. В чем может быть проблема.
Программирование Android Addplus - моя первая математическая игра на скорость счета
https://play.google....addplus.android Необходимо выбирать шарики так, чтобы их сумма была равна 10. Игра заканчивается когда первый шар коснется нижней части экрана. Скорость движения шариков постоянно увеличивается. Так же есть 3 дополнительных шарика: - Таймер (замедляет время падения шариков) - Ядерный взрыв (удаляет все шарики) - Бомба (очищает ряд в котором находится) Игра...
Программирование Android Правильный запрос и парсинг даннх http://www.cyberforum.ru/android-dev/thread1280064.html
Здравствуйте. Столкнулся с проблемой на этапе запуска программы. В eclipce в логе выводит такой результат: 10-20 05:52:27.700: W/dalvikvm(1857): threadid=1: thread exiting with uncaught exception (group=0xb3ac9ba8) 10-20 05:52:27.720: E/AndroidRuntime(1857): FATAL EXCEPTION: main 10-20 05:52:27.720: E/AndroidRuntime(1857): Process: com.example.rssnews, PID: 1857 10-20 05:52:27.720:...
Программирование Android Картинка в imageButton (setImageResource) Вопрос такой: В приложении имеется кнопка-картинка (imageButton) при нажатии которой меняется ее фон: public void imageButtonClick(View v){ button.setBackgroundResource(R.drawable.picture); } Если размеры картинки, которую я ставлю в качестве фона (picture), больше размера кнопки, то кнопка растягивается. Как этого избежать и при изменении фона сохранить размеры кнопки? ... подробнее

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

Поиск в андроид справочнике - Программирование Android

21.10.2014, 15:09. Просмотров 545. Ответов 2
Метки (Все метки)

Есть задача реализовать поиск в справочнике. Есть одна активити куда списком из базы данных с помощью CursorLoader выводится информация. Пробую реализовать поиск по справочнику через Android Search Widget.
На данный момент в качестве searchable activity выстуапает активити в которой выводится списком сам справуочник. Вопрос вот в чем - правильно ли это? Или нужно создать отдельную активити под поиск?

Как я понял создается копия моей активити при нажатии на поиск? Это связанные копии или нет? Могу я ее заполнять другими данными, полученными из поиска? А затем вернуться с помощью кнопки BACK к всему списку?

Добавлено через 1 час 12 минут
Приведу код. Проблема состоит в методе
Java
1
doMySearch(query);
который должен отвечать за реализацию поиска и вывод результата в текущую активити. Переопределяя список.
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package com.example.citycode;
 
import java.util.concurrent.TimeUnit;
 
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
 
public class MainActivity extends ActionBarActivity implements LoaderCallbacks<Cursor> {
 
  ListView lvData;
  DBHelper db;
  SimpleCursorAdapter scAdapter;
 
  /** 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);
    }
 
 
    
    // Формируем столбцы сопоставления
    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, null, from, to, 0);
    lvData = (ListView) findViewById(R.id.listdata);
    lvData.setAdapter(scAdapter);
    
    
    // Создаем лоадер для чтения данных
    getSupportLoaderManager().initLoader(0, null, this);
    
    
  }
 
  protected void onDestroy() {
    super.onDestroy();
    // Закрываем подключение к БД при выходе
    db.close();
  }
  
  public void doMySearch(String query) {
        //Ищем совпадения
        Cursor 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 menu; this adds items to the action bar if it is present.
        getMenuInflater().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.setSubmitButtonEnabled(true);
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
        
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            //onSearchRequested();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
  @Override
  public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
    return new MyCursorLoader(this, db);
  }
 
  @Override
  public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    scAdapter.swapCursor(cursor);
  }
 
  @Override
  public void onLoaderReset(Loader<Cursor> loader) {
  }
  
  static class MyCursorLoader extends CursorLoader {
 
      DBHelper db;
    
    public MyCursorLoader(Context context, DBHelper db) {
      super(context);
      this.db = db;
    }
    
    @Override
    public Cursor loadInBackground() {
      Cursor cursor = db.getAllData();
      try {
        TimeUnit.SECONDS.sleep(2);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      return cursor;
    }
    
  }
}
Ошибка выдается следующая:
10-21 11:32:41.357: E/AndroidRuntime(6103): 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.

Как можно решить?

Добавлено через 2 часа 27 минут
Более детально и просто описал проьлему в другой теме: Что я неправильно делаю при реализации поиска?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru