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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Удалить файл http://www.cyberforum.ru/android-dev/thread1537486.html
Как удалить файл программно
Android Как закрыть фрагмент? Нужно в самом фрагменте завершить его работу и вернуться обратно, как это реализовать http://www.cyberforum.ru/android-dev/thread1537455.html
Android Как перенести данные из БД в сервис?
Я сейчас пишу программу на андроид и в ней пользователь может внести в список (list view) данные друга - его имя и дату рождения. После внесения данных, они запоминаются в базе данных и стартует сервис (если до этого пользователь не вводил данных других друзей). Сервис должен высчитывать сколько осталось до дня рождения друзей пользователя. Но я не могу разобраться, как сервис может взять данные...
Android Повтор Notification
Есть уведомление, которое высвечивает текст, который берется из массива. Как сделать, что бы через некоторый промежуток времени после того, как уведомление скрыли(свайпом, или нажали по нему), оно опять появилось?
Android Задать размер Layout в dp программно http://www.cyberforum.ru/android-dev/thread1537280.html
Здраствуйте! Как реализовать размер Layout в dp программно? В xml это так: android:layout_height="500dp". А на java как? LayoutParams lpView = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); Добавлено через 1 час 12 минут Решил проблему. 100, 200 (Ширина, высота)
Android Задать ScrollView программно Здраствуйте! Как сделать ScrollView с элементом LinearLayout программно? Делаю одно, не работает другое... ScrollView scroll = new ScrollView(this); scroll.setBackgroundColor(android.R.color.transparent); scroll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); // создание LinearLayout LinearLayout linLayout = new... подробнее

Показать сообщение отдельно
snezhok11
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 27

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

25.09.2015, 08:38. Просмотров 165. Ответов 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;
        }
 
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru