Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
1

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

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

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

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

Как в ListView добавлять элементы
всем привет есть ListView , при старте программы одна строчка занята с надписью...

Как в listview добавлять множество строк?
Как в listview добавлять множество автоматически генерируемых строк? Литералы...

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

RecyclerView как правильно добавлять данные
Здравствуйте. Есть RecyclerView, с таким адаптером import...

52
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 20:55  [ТС] 41
Не ругайся ))) Я не волшебник - я только учусь... )))

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
dbS = new DB(getActivity());
        dbS.open();
        // получаем курсор
        cursor = dbS.getAllData();
        getActivity().startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[]{"dat", "cat", "debt", "kol"};
        int[] to = new int[]{R.id.dat, R.id.cat, R.id.sm, R.id.kol};
        stAdapter = new SimpleCursorAdapter(getActivity(), R.layout.listviev_item, cursor, from, to);
        listv = (ListView) getActivity().findViewById(R.id.listV);
        listv.setAdapter(stAdapter);
 
 
 
                cursor.requery();
Добавлено через 1 минуту
Цитата Сообщение от Seivan Посмотреть сообщение
R.id.dat
- сие то, куда надо вставить нормальную дату...
А сортировка уже работает на ура!! )))

Добавлено через 52 минуты
Armagedo, Помоги лентяю, пожалуйста!(((
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 21:37 42
Пробуй

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
dbS = new DB(getActivity());
dbS.open();
// получаем курсор
cursor = dbS.getAllData();
getActivity().startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
String[] from = new String[]{"dat","cat", "debt", "kol"};
int[] to = new int[]{R.id.dat, R.id.cat, R.id.sm, R.id.kol};
            
stAdapter = new SimpleCursorAdapter(getActivity(), R.layout.listviev_item, cursor, from, to){
 
            @Override
            public void setViewText(TextView v, String text){
                                            
              if (v.getId()==R.id.dat){
                  Calendar tempCalendar = Calendar.getInstance();
                  tempCalendar.setTimeInMillis(Integer.valueOf(text));
                  String tmpText="";
                  tmpText+=String.valueOf(tempCalendar.get(Calendar.DAY_OF_MONTH));
                  tmpText+="."+String.valueOf(tempCalendar.get(Calendar.MONTH));
                  tmpText+="."+String.valueOf(tempCalendar.get(Calendar.YEAR));
                  v.setText(tmpText);
              }
              else super.setViewText(v, text);
              
                           
              
             }
};
 
listv = (ListView) getActivity().findViewById(R.id.listV);
listv.setAdapter(stAdapter);
 
cursor.requery();
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 22:01  [ТС] 43
Цитата Сообщение от Armagedo Посмотреть сообщение
tempCalendar.setTimeInMillis(Integer.valueOf(text));
Тут выдает ошибку.... (((
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 22:04 44
Какую?
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 22:11  [ТС] 45
java.lang.NumberFormatException: Invalid int: "1419361240990"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parse(Integer.java:378)
at java.lang.Integer.parseInt(Integer.java:366)
at java.lang.Integer.parseInt(Integer.java:332)
at java.lang.Integer.valueOf(Integer.java:490)
at piton.ru.myincome.fragments.AllFragment$1.setViewText(AllFragment.java:80)
at android.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:156)
at android.widget.CursorAdapter.getView(CursorAdapter.java:250)
at android.widget.AbsListView.obtainView(AbsListView.java:2267)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
at android.widget.ListView.onMeasure(ListView.java:1156)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15172)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15172)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15172)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
at android.view.View.measure(View.java:15172)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:525)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Добавлено через 34 секунды
Цитата Сообщение от Seivan Посмотреть сообщение
at piton.ru.myincome.fragments.AllFragment$1.setViewText(AllFragment.java:80)
Это мой класс...

Добавлено через 3 минуты
Ошибку выдает при вставке записи...
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 22:13 46
Лучший ответ Сообщение было отмечено Seivan как решение

Решение

Ну, так подсунь же ж ты ему long

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
dbS = new DB(getActivity());
dbS.open();
// получаем курсор
cursor = dbS.getAllData();
getActivity().startManagingCursor(cursor);
// формируем столбцы сопоставления
String[] from = new String[]{"dat","cat", "debt", "kol"};
int[] to = new int[]{R.id.dat, R.id.cat, R.id.sm, R.id.kol};
stAdapter = new SimpleCursorAdapter(getActivity(), R.layout.listviev_item, cursor, from, to){
        @Override
        public void setViewText(TextView v, String text){
         if (v.getId()==R.id.dat){
                
           SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy");
        
           Calendar tempCalendar = Calendar.getInstance();
           tempCalendar.setTimeInMillis(Long.parseLong(text));
        
           String tmpText = sdf.format(tempCalendar.getTime()));
        
           v.setText(tmpText);
         }
        else super.setViewText(v, text);
       }
};
listv = (ListView) getActivity().findViewById(R.id.listV);
listv.setAdapter(stAdapter);
cursor.requery();
1
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 22:20  [ТС] 47
уже без ошибок, но выдает, например, дату: 23 12 201423.11.2014
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 22:23 48
Ну, я ж тебе уже модифицировал код под другое исполнение...

Или к номеру месяца прибавляй еще единичку - месяца начинаются нумероваться с 0
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 22:41  [ТС] 49
У меня, получается, дублирует дату... не врублюсь - как это наладить... ((((

Добавлено через 10 минут
Нашел лишнее... ))) Тебе снова плюсики!!!!

Добавлено через 1 минуту
вот так - работает и отображает усё намана!!!

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (v.getId() == R.id.dat){
 
                    SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
 
                    Calendar tempCalendar = Calendar.getInstance();
//                    tempCalendar.setTimeInMillis(Long.parseLong(text));
 
                    String tmpText = sdf.format(tempCalendar.getTime());
 
//                    tmpText+=String.valueOf(tempCalendar.get(Calendar.DAY_OF_MONTH));
//                    tmpText+="."+String.valueOf(tempCalendar.get(Calendar.MONTH));
//                    tmpText+="."+String.valueOf(tempCalendar.get(Calendar.YEAR));
                    v.setText(tmpText);
                }
                else super.setViewText(v, text);
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 22:44 50
Брехня, не будет оно нормально работать с данными из таблицы...
Раскоменти код строки номер 6!!!!
Нах ты ее закомментил?
1
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 22:47  [ТС] 51
Фиг вам, как говорится.... дата не меняется.... (((( хотя, формат оной - нормальный...

Добавлено через 1 минуту
СПАСИБОЧКИ!!!!! Еще Плюс!!!!

Добавлено через 50 секунд
не могу добавить плюс... (((( чего так????
0
Armagedo
209 / 209 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 22:48 52
Всё, давай, учись.
Удачи
2
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 22:49  [ТС] 53
Спасииииибоооо!!!! ))))
0
23.12.2014, 22:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 22:49

Как заставить LisView забивать элементы в начало списка?
у меня обычный ArrayList из своих элементов ArrayList<Product> products =...

Данные из SQlite в ListView, обработка события ListView
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные...

Как записывать данные из SQLite в ListView
Здравствуйте, задался таким вопросом. Есть SQLite таблица, данные в которой...


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

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

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