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

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

Войти
Регистрация
Восстановить пароль
 
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27
#1

Множественный выбор из бд ListView - Программирование Android

25.09.2015, 08:38. Просмотров 174. Ответов 0
Метки нет (Все метки)

Здравствуйте,помогите пожалуйста разобраться.Весь инет перерыл,ничего не нашел на Русском языке.
Есть ListView с множественным выбором из бд.Как вывести данные из бд и вывести на экран я понял через SimpleCursorAdapter ,а вот как мне при нажатии на элементы в ListView получить данные элемента из бд я не знаю.Как выдернуть данные из string-array я заню,а из бд нет.
из string-array вот этим кодом

Java
1
2
3
4
5
6
7
8
9
10
  public void onClick(View arg0) {
    // пишем в лог выделенные элементы
    Log.d(LOG_TAG, "checked: ");
    SparseBooleanArray sbArray = lvMain.getCheckedItemPositions();
    for (int i = 0; i < sbArray.size(); i++) {
      int key = sbArray.keyAt(i);
      if (sbArray.get(key))
        Log.d(LOG_TAG, names[key]);
    }
  }
К примеру нужно во множественном выборе записать значаения нажатых элементов id,name.
Мой код
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
public class MainActivity extends FragmentActivity implements LoaderCallbacks<Cursor> {
    final String LOG_TAG = "myLogs";
    private static final int CM_DELETE_ID = 1;
    ListView lvData;
    DB 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 DB(this);
        db.open();
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_TXT};
        int[] to = new int[] {  android.R.id.text1 };
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_multiple_choice,  null, from, to, 0);
        lvData = (ListView) findViewById(R.id.lvData);
        lvData.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        Log.d(LOG_TAG, DB.COLUMN_TXT);
 
        lvData.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData);
 
        // создаем лоадер для чтения данных
        getSupportLoaderManager().initLoader(0, null, this);
    }
 
  
 
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
    }
 
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
            // получаем из пункта контекстного меню данные по пункту списка
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            // извлекаем id записи и удаляем соответствующую запись в БД
            db.delRec(acmi.id);
            // получаем новый курсор с данными
            getSupportLoaderManager().getLoader(0).forceLoad();
            return true;
        }
        return super.onContextItemSelected(item);
    }
 
    protected void onDestroy() {
        super.onDestroy();
        // закрываем подключение при выходе
        db.close();
    }
 
    @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 {
 
        DB db;
 
        public MyCursorLoader(Context context, DB db) {
            super(context);
            this.db = db;
        }
 
        @Override
        public Cursor loadInBackground() {
            Cursor cursor = db.getAllData();
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return cursor;
        }
 
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2015, 08:38     Множественный выбор из бд ListView
Посмотрите здесь:

Множественный выбор в listview - Программирование Android
вот так создается список class AdapterHelper{ String name = {&quot;Первый&quot;,&quot;Второй&quot;,&quot;Третий&quot;}; int img =...

ListView множественный выбор несмотря на SingleChoice mode - Программирование Android
Здравствуйте! Столкнулся с проблемой: использую listview со своим Adapter-ом, наследуем от BaseAdapter-а, с переопределенными методами...

Множественный выбор в списке - Программирование Android
Создал список в активити и в отдельном XML файле написал как будет выглядеть этот список с двумя текстовыми строками, но как добавить...

ListView не работает выбор элемента - Программирование Android
Доброго времени суток. Который день мучаюсь. Не знаю как поменять цвет ListView, так что бы не сбить работу выбора элемента при нажатии....

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

Копирование данных из 1 listView во 2 listView - Программирование Android
Нужно что бы при нажатии на один элемент в первом ListView он копировался во второй ListView причём многократно.Но я использую...

Использование ListView в ListView - Программирование Android
Всем привет. Можете показать как использовать ListView в ListView, с заполнением как внешнего ListView, так и внутреннего причем с...

Переход из Listview в Listview - Программирование Android
Как сделать, что бы когда нажимаешь в главном листвью на кнопку, открывалось новое нужное(т.е. то по которому тапнули) активити с другим...

Выбор SIM карты, с которой необходимо произвести выбор - Программирование Android
Добрый день! Пошерстил форум, но так и не нашел чего-то, что смогло бы мне определенно помочь. Дело в том, что разрабатываю...


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

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

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