Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
#1

ListView - как добавлять данные из БД в начало списка? - Программирование Android

23.12.2014, 10:05. Просмотров 1970. Ответов 52
Метки нет (Все метки)

Здравствуйте. Подскажите, пожалуйста, как сделать, чтобы при добавлении данных в БД - в ListView они попадали в начало списка.
Использую SimpleCursorAdapter...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2014, 10:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ListView - как добавлять данные из БД в начало списка? (Программирование Android):

Как добавлять записи в начало списка и ограничивать их количество? - Программирование Android
есть listview который берет данные из sqlite, и возникли такие вопросы: 1. как сделать чтоб в базе было не больше 10-ти записей? 2....

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

Как в listview добавлять множество строк? - Программирование Android
Как в listview добавлять множество автоматически генерируемых строк? Литералы не помогают переходить на новую строку. Может, я ошибся...

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

Как заставить LisView забивать элементы в начало списка? - Программирование Android
у меня обычный ArrayList из своих элементов ArrayList<Product> products = new ArrayList<Product>(); я добавляю элементы как...

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

52
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 10:15 #2
Ну, как вариант, в запросе на выборку сортируйте в курсор адаптера в обратном порядке, например, по rowid (или ваш походящий ключ) - что-то типа
SQL
1
SELECT * FROM yourtable ORDER BY rowid DESC
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 10:23  [ТС] #3
У меня вот такой код добавления данных:

Java
1
2
3
4
5
6
7
8
9
// добавить запись в DB_TABLE
    public void addRec(String dat, String cat, String debt, String kol) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_DAT, dat);
        cv.put(COLUMN_CAT, cat);
        cv.put(COLUMN_SUM, debt);
        cv.put(COLUMN_KOL, kol);
        mDB.insert(DB_TABLE, null, cv);
    }
Добавлено через 1 минуту
Это здесь мне надо что-то править?

Добавлено через 2 минуты
Или при получении данных из таблицы?

Java
1
2
3
4
// получить все данные из таблицы DB_TABLE
    public Cursor getAllData() {
        return mDB.query(DB_TABLE, null, null, null, null, null, null);
    }
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 10:33 #4
Java
1
return mDB.rawquery("SELECT * FROM DB_TABLE ORDER BY rowid DESC", null);
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 10:45  [ТС] #5
Ошибку выдает в этой строке при запуске приложения... (((
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 10:48 #6
Java
1
return mDB.rawquery("SELECT rowid _id, * FROM DB_TABLE ORDER BY _id DESC", null);
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 10:53  [ТС] #7
Снова - там же... (((
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 10:54 #8
Лечу по фотографии
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 10:55  [ТС] #9
Переведи ))))
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 11:27 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
return mDB.rawquery("SELECT rowid _id, * FROM "+ DB_TABLE +" ORDER BY _id DESC", null);
1
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 11:28  [ТС] #11
Вот класс БД

Кликните здесь для просмотра всего текста


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
private static final String DB_NAME = "myincome";
    private static final int DB_VERSION = 1;
 
    private static final String DB_TABLE = "mytab";
  
 
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_DAT = "dat";
    public static final String COLUMN_CAT = "cat";
    public static final String COLUMN_SUM = "debt";
    public static final String COLUMN_KOL = "kol";
 
    private static final String DB_CREATE =
            "create table " + DB_TABLE + "(" +
                    COLUMN_ID + " integer primary key autoincrement, " +
                    COLUMN_DAT + " text, " +
                    COLUMN_CAT + " text, " +
                    COLUMN_SUM + " text, " +
                    COLUMN_KOL + " text" +
                    ");";
 
  
    private final Context mCtx;
 
 
    private DBHelper mDBHelper;
    private SQLiteDatabase mDB;
 
    public DB(Context ctx) {
        mCtx = ctx;
    }
 
    // открыть подключение
    public void open() {
        mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
        mDB = mDBHelper.getWritableDatabase();
    }
 
    // закрыть подключение
    public void close() {
        if (mDBHelper != null) mDBHelper.close();
    }
 
    // получить все данные из таблицы DB_TABLE
    public Cursor getAllData() {
     //   return mDB.query(DB_TABLE, null, null, null, null, null, null); // - Было так.... запускалось...
 
    return mDB.rawQuery("SELECT rowid _id, * FROM DB_TABLE ORDER BY _id DESC", null); // А так  - ошибка (в этой строке и в классе, где используется этот метод) при старте приложения
 
    }
 
   
    // добавить запись в DB_TABLE
    public void addRec(String dat, String cat, String debt, String kol) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_DAT, dat);
        cv.put(COLUMN_CAT, cat);
        cv.put(COLUMN_SUM, debt);
        cv.put(COLUMN_KOL, kol);
        mDB.insert(DB_TABLE, null, cv);
    }
 
   
    // обновить запись в DB_TABLE
    public void updCod(long id, String dat, String cat, String debt, String kol) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_DAT, dat);
        cv.put(COLUMN_CAT, cat);
        cv.put(COLUMN_SUM, debt);
        cv.put(COLUMN_KOL, kol);
        mDB.update(DB_TABLE, cv, COLUMN_ID + " = " + id, null);
    }
 
   
    // установить курсор на запись с введенным ID
    public Cursor select(long id) {
 
    return mDB.query(true, DB_TABLE, new String[] { COLUMN_ID, COLUMN_DAT, COLUMN_CAT, COLUMN_SUM, COLUMN_KOL },
              COLUMN_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null);
    }
  
 
    // удалить запись из DB_TABLE
    public void delRec(long id) {
        mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
    }
 
  
    // удалить все записи из DB_TABLE
    public void deleteAll() {
        mDB.delete(DB_TABLE, null, null);
    }
 
   
 
    // класс по созданию и управлению БД
    private class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context, String name, CursorFactory factory,
                        int version) {
            super(context, name, factory, version);
        }
 
        // создаем и заполняем БД
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DB_CREATE);
     
 
            ContentValues cv = new ContentValues();
            for (int i = 1; i < 2; i++) {
                cv.put(COLUMN_DAT, "1.12.2014");
                cv.put(COLUMN_CAT, "Взносы");
                cv.put(COLUMN_SUM, "100");
                cv.put(COLUMN_KOL, "2");
 
                db.insert(DB_TABLE, null, cv);
 
            }
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }
}
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 11:34 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
А говоришь не понимаешь...

Java
1
return mDB.rawquery("SELECT * FROM "+ DB_TABLE +" ORDER BY "+ COLUMN_ID+" DESC", null);
1
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 11:44  [ТС] #13
Спасибочки... ))) Пашет!!! Плюсик отправил )

Добавлено через 55 секунд
А таким же образом можно сортировать и по дате, да?

Добавлено через 1 минуту
Цитата Сообщение от Armagedo Посмотреть сообщение
Код Java(TM) 2 Platform Standard Edition 5.0
1
return mDB.rawquery("SELECT rowid _id, * FROM "+ DB_TABLE +" ORDER BY _id DESC", null);

Вот это заработало... то поздно сообщение дошло... )

Добавлено через 5 минут
И второй работает ))
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 11:55 #14
Используй второй вариант
Java
1
return mDB.rawquery("SELECT * FROM "+ DB_TABLE +" ORDER BY "+ COLUMN_ID+" DESC", null);
Я ж не знал, что у тебя есть ключ-счетчик.
В первом варианте используется автоматически вводимое SQLite поле rowid (естественно, если при создании таблицы не было выбрано опцию WITHOUT ROWID).
И так совпало, что в выборке это поле "обзывается" _id, аналогично существующему у тебя полю, которое тоже отбирается в силу "*".
Что там в результатае в курсоре в таком случае - нужно смотреть...

А таким же образом можно сортировать и по дате, да?
Та по чем хочешь, в принципе
Java
1
return mDB.rawquery("SELECT * FROM "+ DB_TABLE +" ORDER BY "+ COLUMN_DAT+" DESC", null);
Лучше читай первоисточник по SQLite и запросам
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 12:36  [ТС] #15
Только начал конкретно разбираться в сортировках и выборка... Спасибо еще раз за помощь!! ) теперь легче будет дальше все понять ))

По дате попытался так же сделать, но не сортирует, чего-то... добавляет в конец листа...
поле с датой изменил на COLUMN_DAT + " date, " +
0
23.12.2014, 12:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 12:36
Привет! Вот еще темы с ответами:

Как записывать данные из SQLite в ListView - Программирование Android
Здравствуйте, задался таким вопросом. Есть SQLite таблица, данные в которой берутся из EditText. Я хочу их записывать их в ListView,...

Как обратиться к элементу (button) внутри пункта списка (ListView) - Программирование Android
Здравствуйте! Помогите, пожалуйста Есть активити с ListView. В каждом пункте списка есть пару TextView и один Button. Как и где ...

Как распарсить страницу и записать данные в ListView? - Программирование Android
Добрый день , Киборги! Прошлая тема ,созданная мною в данном разделе , касалась вопроса WebView'a ,но теперь все стало предельно ясно. ...

Прокрутка ListView в начало при обновлении EditText - Программирование Android
Всем привет! Проблема следующая - имеется ListView с адаптером. Элементы ListView - кастомные вьюшки с EditText. Если список очень большой,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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