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

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

Войти
Регистрация
Восстановить пароль
 
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27
25.09.2015, 08:38     Множественный выбор из бд ListView #1
Здравствуйте,помогите пожалуйста разобраться.Весь инет перерыл,ничего не нашел на Русском языке.
Есть 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
Android Scroll Listview
Android Обновление ListView
ListView не работает выбор элемента Android
Android ListView множественный выбор несмотря на SingleChoice mode
Множественный выбор в списке Android
Scroll listview Android
Android ListView с разделителями
Android Кастомизация ListView
Android Выбор SIM карты, с которой необходимо произвести выбор
ListView с датами Android
Поиск по listview Android

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

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

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