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

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

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

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

23.12.2014, 10:05. Просмотров 1914. Ответов 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
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
23.12.2014, 12:46 #16
А чем сортировка по id не устраивает? Дата то сегодняшняя.
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 12:52  [ТС] #17
В итоге мне нужно сортировать по дате...

Добавлено через 31 секунду
Дата может меняться...
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 12:53 #18
Seivan,
поле с датой изменил на COLUMN_DAT + " date, " +
это какой-то ненужный костыль, ИМХО, тем более непонятно, как это вообще отрабатывается - ведь у тебя нет поля date...
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 12:55  [ТС] #19
Цитата Сообщение от Armagedo Посмотреть сообщение
Seivan,
поле с датой изменил на COLUMN_DAT + " date, " +
это какой-то ненужный костыль, ИМХО...

Это создание базы данных и таблицы с полями


Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
private static final String DB_CREATE =
            "create table " + DB_TABLE + "(" +
                    COLUMN_ID + " integer primary key autoincrement, " +
                    COLUMN_DAT + " date, " +
                    COLUMN_CAT + " text, " +
                    COLUMN_SUM + " text, " +
                    COLUMN_KOL + " text" +
                    ");";
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 13:09 #20
Это тип "datE", а поле у тебя "dat".
Отсюда и вопрос возник.

Кстати, SQLite не умеет хранить типы date/time в обычном понимании, равно, как и boolean...
Так что, что там и в каком виде хранится у тебя в этом поле, а значит и правила сравнения - зависит...
1.2 Date and Time Datatype

SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

https://www.sqlite.org/datatype3.html
P.S. А, понял, что где откуда
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 13:13  [ТС] #21
А - вопрос...


COLUMN_DAT + " date, " - это я не поле даты создал?... а что - тогда? ))

Добавлено через 2 минуты
еще бы мне понять.... )

Добавлено через 1 минуту
Это надо преобразовывать во что-то, например - в миллисекунды и отсюда плясать??
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 13:21 #22
Не надо никуда плясать.
Оставь, по ходу дела будешь разбирать
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 13:29  [ТС] #23
Djn? pfgecnbk d SQLite Expert Базу... пишет, что поле у меня, таки, тип - date...

Добавлено через 46 секунд
Опечатки... ))) запустил базу... в SQLite Expert Базу... пишет, что поле у меня, таки, тип - date...
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 13:32 #24
date-то он date, да не совсем date

Ты туда без особой проблемы можешь запихнуть вот такие значения
27-07-1987
07.89658.554563
5656486564878978878

Как их сравнивать?
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 13:34  [ТС] #25
Только дата везде отображается: 1899-12-30.... ((((

Добавлено через 1 минуту
Цитата Сообщение от Armagedo Посмотреть сообщение
date-то он date, да не совсем date
Ты туда без особой проблемы можешь запихнуть вот такие значения
27-07-1987
07.89658.554563
5656486564878978878
Как их сравнивать?

Вот, и я о том же....
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 13:35 #26
Думай, Чапай, думай
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 13:46  [ТС] #27
у меня есть какое-то преобразование к календарю....
Кликните здесь для просмотра всего текста


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
DateFormat format = DateFormat.getDateInstance();
    Calendar calendar = Calendar.getInstance();
 
    DB dbS;
    Cursor cursor;
 
    LinearLayout view;
 
    TextView textDate;
    Button btnSave;
 
    private FragmentManager manager;
    private FragmentTransaction transaction;
 
    public void onCreate(Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        super.onCreate(savedInstanceState);
 
        manager = getActivity().getSupportFragmentManager();
    }
 
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
 
        view = (LinearLayout) getActivity().getLayoutInflater()
                .inflate(R.layout.fragment_details, null);
        builder.setView(view);
 
        view.findViewById(R.id.btnSave).setOnClickListener(this);
        view.findViewById(R.id.textDate).setOnClickListener(this);
 
        builder.setTitle("Редактировать")
                .setIcon(R.drawable.edit)
                .setCancelable(false);
 
        return builder.create();
    }
    @Override
    public void onStart() {
        super.onStart();
        dbS = new DB(getActivity());
        dbS.open();
        // получаем курсор
        cursor = dbS.getAllData();
        getActivity().startManagingCursor(cursor);
 
        textDate = (TextView) getDialog().findViewById(R.id.textDate);
        btnSave = (Button) getDialog().findViewById(R.id.btnSave);
 
        upddate();
    }
    public void setDate() {
        new DatePickerDialog(getActivity(), d,
                calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH)).show();
    }
    DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker arg0, int year, int month, int day) {
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month);
            calendar.set(Calendar.DAY_OF_MONTH, day);
            upddate();
        }
    };
    private void upddate() {
        textDate.setText(format.format(calendar.getTime()));
    }
    public void onClick(View arg0) {
        switch (arg0.getId()) {
            case R.id.btnSave:
 
                TextView  dateText = (TextView) getDialog().findViewById(R.id.textDate);
                EditText categoryText = (EditText) getDialog().findViewById(R.id.etCategory);
                EditText sumText = (EditText) getDialog().findViewById(R.id.etAmount);
                EditText kolText = (EditText) getDialog().findViewById(R.id.etNumber);
 
                String dat = dateText.getText().toString();
                String cat = categoryText.getText().toString();
                String debt = sumText.getText().toString();
                String kol = kolText.getText().toString();
 
                dbS.addRec(dat, cat, debt, kol);
                // обновляем курсор
                cursor.requery();
 
                transaction = manager.beginTransaction();
                AllFragment allFragments = new AllFragment();
                transaction.replace(R.id.container, allFragments, allFragments.TAG);
                transaction.commit();
 
                Toast.makeText(getActivity().getApplicationContext(), "Добавлено: " + cat + " " + kol + "чел",
                        Toast.LENGTH_SHORT).show();
                dismiss();
                break;
            case R.id.textDate:
                setDate();
                break;
 
        }
    }
}


Добавлено через 1 минуту
или это не то?
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 14:17 #28
ИМХО, храни "миллисекунды" в базе.
Собственно ты с этого и хотел начать
0
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 14:24  [ТС] #29
час от часу не легче... это надо прописывать в классе БД??
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 14:27 #30
Ну, никто не говорил, что будет легко
Зато миллисекунды - это число и по нему упорядочивать, как два пальца.

это надо прописывать в классе БД??
Все операции добавления и изменения значения поля date в таблице у тебя должны идти через функцию преобразования даты в миллисекунды.
Ну, а для отображения пользователю - наоборот
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 14:27
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
23.12.2014, 14:27
Ответ Создать тему
Опции темы

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