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

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

Войти
Регистрация
Восстановить пароль
 
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
#1

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

18.01.2016, 17:03. Просмотров 328. Ответов 12
Метки нет (Все метки)

есть listview который берет данные из sqlite, и возникли такие вопросы:

1. как сделать чтоб в базе было не больше 10-ти записей?
2. чтоб каждая новая запись отображалась в начале списка а не в конце?
3. когда запись совпадает с уже имеющейся она записывалась в начало списка?

помогите пожалуйста понять логику, вроде вопросы простые, но в голове бардак насчет того как это организовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2016, 17:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как добавлять записи в начало списка и ограничивать их количество? (Программирование Android):

ListView - как добавлять данные из БД в начало списка? - Программирование Android
Здравствуйте. Подскажите, пожалуйста, как сделать, чтобы при добавлении данных в БД - в ListView они попадали в начало списка. Использую...

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

Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? - C++
Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? Вот сам список: #include <conio.h> ...

При добавлении в существующий список, новые записи добавлять в начало - C (СИ)
Как сделать так, чтобы при добавлении в существующий список, новые записи добавлялись в начало? #include <stdio.h> #include...

Как добавлять записи в файл, делая проверку на пустые записи - Visual Basic
k = 0 'Ñ÷åò÷èê ïócòûõ çàïèñåé For x = 0 To 7 If Text1(x).Text = "" Then Shape1(x).Visible = True k = k + 1 ...

Рекурсия. Формула записи элементов в начало списка - C++
формула по записи элементов в начало списка, в итеративном варианте олично работала а вот в рекурсивном работает криво помогите плизз!!! ...

12
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
20.01.2016, 13:38  [ТС] #2
Вопрос 2 отпал, сделал колонку index в таблице и в запросе query для списка последний параметр order by(сортировка)

Горячий вопрос #1. Может кто вкурсе как можно ограничить кол- во создаваемых/изменяемых записей не более 10-ти ?
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
20.01.2016, 15:57 #3
создать 10 записей, а потом делать не INSERT а UPDATE
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
20.01.2016, 16:48  [ТС] #4
Паблито, а если добавляется 11-я или последующие, то нужно чтоб они становились 10-ми, а предыдущие на единицу меньше, как с этим быть?

Добавлено через 8 минут
т.е. как-то так:
11 =10
10 =9
9=8
8=7
7=6
6=5
5=4
4=3
3=2
2=1

т.е. самая старая запись должна удаляться, а самая новая становиться 10-й, как зациклить этот процесс?
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
20.01.2016, 17:09 #5
disx, ещё раз, как и сказал Паблито, проверять на наличие этой записи. Если она есть, то выполнять update, если нет, то insert. Если Вам принципиально, чтобы индексы были до 10, делайте реиндекс
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
20.01.2016, 17:29 #6
disx, стандартных средств для этого вроде как нет. Можно вместо ид использовать дату записи в мс и удалять лишние
Код
DELETE FROM table where time NOT IN (SELECT time from table ORDER BY insertion_date DESC LIMIT 50)
Добавлено через 1 минуту
Цитата Сообщение от YuraAAA Посмотреть сообщение
проверять на наличие этой записи
А как их проверять, там ведь записи разные совершенно могут быть, как я понял?
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
20.01.2016, 17:46 #7
Spelcrawler, но какой-то ведь признак должен быть?

Добавлено через 35 секунд
Spelcrawler, хотя не зная цели задачи, мы с Вами гадаем на кофейной гуще
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
20.01.2016, 17:47  [ТС] #8
YuraAAA, индексы не принципиально...

Spelcrawler, про дату понял вроде, буду пробовать...
да записи разные, принцип отображения как в контактах телефона (входящие/исходящие) убывающий по времени список и последний набранный в топ.
1
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
20.01.2016, 17:48 #9
YuraAAA, может я не так понял вопрос, но я думаю что там просто какие-то последние новости или что-то подобное. Если так то никак не свяжешь новую строку со старой.
0
Pablito
20.01.2016, 17:51
  #10

Не по теме:

я вообще все промежуточные операции делал бы над коллекциями

0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
20.01.2016, 18:14  [ТС] #11
Spelcrawler, да их связывать не надо я пока это так представляю:
1 добавить 10 записей (хоть пустых)
2 при создании новой (типа 11-я)
2.1 сначала удалить 1-ю их останется 9
2.2 Записать значение этой новой в 10-ю
И так далее, но незнаю что происходит с id после 2.1
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
20.01.2016, 18:19 #12
disx, можно просто писать сразу все что есть, а потом удалить лишнее (запрос писал выше). Но нужно либо чтобы были автоинкрементные ид, либо дату добавления записывать.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
29.01.2016, 20:43  [ТС] #13
Паблито, YuraAAA, Spelcrawler, Вынес-таки себе маленько мозг с этой задачей, но "добил" ее, т.е. фишка была в том чтобы удалять из конца списка последнюю запись (т.е. в моем случае первую фильтр же по времени стоит) и остается количество 9, а какое у него там id не важно.

Сейчас для завершения темы прошу помощи по оптимизации методов проверки совпадения, т.е. может как-то покрасивше можно или так сойдет:

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
public void controlRec(){
       String phoneFormat="";
     Cursor  cDB = db.getAllData();
       int Count = cDB.getCount();
       long currentDateTime = System.currentTimeMillis();
       int time = Integer.valueOf((int) currentDateTime);
 
           if (cDB.getCount()<=9) {
               if (cDB.moveToFirst()) {
                   phoneFormat = number.replaceAll("[  + ( ) -]", "");
                   int phoneColIndex = cDB.getColumnIndex("number");
                   do {
                       int idColIndex = cDB.getColumnIndex("_id");
                       String stringID = cDB.getString(cDB.getColumnIndex("_id"));
                       long ind = Long.valueOf(stringID);
//                       Log.d(LOG_TAG, stringID);
                       String phone = cDB.getString(phoneColIndex);
                       phone = phone.replaceAll("[  + ( ) -]", "");
                       if (phoneFormat.equals(phone)  || idColIndex!=0) {
//                           Log.d(LOG_TAG, phoneFormat);
                           db.delRec(ind);
                       }
                   } while (cDB.moveToNext());
               }
                 db.addRec(number, nameContact, time);
 
           }else {
               if (cDB.moveToFirst()) {
                   phoneFormat = number.replaceAll("[  + ( ) -]", "");
                   int phoneColIndex = cDB.getColumnIndex("number");
 
                   do {
                       int idColIndex = cDB.getColumnIndex("_id");
                       String stringID = cDB.getString(cDB.getColumnIndex("_id"));
                       long ind = Long.valueOf(stringID);
//                       Log.d(LOG_TAG, stringID);
                       String phone = cDB.getString(phoneColIndex);
                       phone = phone.replaceAll("[  + ( ) -]", "");
                       if (phoneFormat.equals(phone)  || idColIndex!=0) {
//                           Log.d(LOG_TAG, phoneFormat);
                           db.delRec(ind);
                       }
                   } while (cDB.moveToNext());
               }
               cDB.moveToFirst();
               String tringID = cDB.getString(cDB.getColumnIndex("_id"));
               long ind = Long.valueOf(tringID);
 
               db.delRec(ind);
               db.addRec(number, nameContact, time);
//               String insertID = cDB.getString(cDB.getColumnIndex("_id"));
//               Toast.makeText(GetCoordinatesActivity.this, String.valueOf(tringID), Toast.LENGTH_SHORT).show();
//               Log.d(LOG_TAG, insertID);
           }
           }
Добавлено через 6 часов 32 минуты
Ребят, ну хоть кто нибудь "да/нет", Али "да ну на" ...
Spelcrawler,
Java
1
DELETE FROM table where time NOT IN (SELECT time from table ORDER BY insertion_date DESC LIMIT 50)
Я в s'ыкуэле не очень, перед андройдом только курсы по основам Java окончил, а на деле ж не паханное поле....
0
29.01.2016, 20:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2016, 20:43
Привет! Вот еще темы с ответами:

Поместить в начало списка L количество четных элементов, а в конец - количество нечетных - C++
Помогите написать программу. При формировании списков значения элементов задавать произвольно. Каждый этап алгоритма оформить в виде...

Создание списка, печать списка на экран, добавления элемента в начало списка, конец списка - Pascal
Построить динамическую структуру типа список . Необходимо реализовать следующие процедуры: 1. создание списка. 2. печать списка на...

Как в gridview добавлять записи? - C# ASP.NET
Всем привет. Вот из книжки взял такой код: &lt;asp:SqlDataSource runat=&quot;server&quot; ID=&quot;PageInfoDataSource&quot; ConnectionString=&quot;&lt;%$...

MS Access Как добавлять записи в таблицу? - Delphi БД
есть бд аксес. как подключать табл и запросы уже знаю. а как добавлять записи в эту таблицу????? пример. табл Товары //в этой таблице...


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

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

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