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

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

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

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

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

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

Android Как заставить LisView забивать элементы в начало списка?
Как правильно обновить данные для списка при изменении данных в другом фрагменте? Android
Android Как в listview добавлять множество строк?
Android Как в ListView добавлять элементы
Как распарсить страницу и записать данные в ListView? Android
Прокрутка ListView в начало при обновлении EditText Android
Android Как обратиться к элементу (button) внутри пункта списка (ListView)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 13:13  [ТС]     ListView - как добавлять данные из БД в начало списка? #21
А - вопрос...


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

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

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

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

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

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

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

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

это надо прописывать в классе БД??
Все операции добавления и изменения значения поля date в таблице у тебя должны идти через функцию преобразования даты в миллисекунды.
Ну, а для отображения пользователю - наоборот
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 14:30  [ТС]     ListView - как добавлять данные из БД в начало списка? #31
Armagedo, а ткни, плиз, где читать-копать... хорошо бы на великом могучем руссише....
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 14:49     ListView - как добавлять данные из БД в начало списка? #32
Так, а что копать?
У тебя используется Calendar.
В базу ложишь Calendar.getTimeInMillis(), а в календарь из базы засовываешь через Calendar.setTimeInMillis(long milliseconds).
Ну, а пользователю отображаешь данные, полученные через упомянутые тобой
calendar.get(Calendar.YEAR)
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH)
https://developer.android.com/refere...l/Calendar.htm

Или шо?
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 14:56  [ТС]     ListView - как добавлять данные из БД в начало списка? #33
ссылка не работает...

Добавлено через 1 минуту
Цитата Сообщение от Armagedo Посмотреть сообщение
В базу ложишь Calendar.getTimeInMillis(), а в календарь из базы засовываешь через Calendar.setTimeInMillis(long milliseconds).
вот это все очень тяжко....
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 15:00     ListView - как добавлять данные из БД в начало списка? #34
Вот здесь ты ложишь "текст" из текствью

String dat = dateText.getText().toString();
а будешь ложить целое
Java
1
2
3
4
5
6
Integer dat = сalendar.getTimeInMillis();
String cat = categoryText.getText().toString();
String debt = sumText.getText().toString();
String kol = kolText.getText().toString();
 
dbS.addRec(dat, cat, debt, kol);
https://developer.android.com/refere.../Calendar.html
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 15:06  [ТС]     ListView - как добавлять данные из БД в начало списка? #35
Цитата Сообщение от Armagedo Посмотреть сообщение
.getTimeInMillis();
подчеркивает крассным...

Добавлено через 1 минуту
Error126, 39) error: non-static method getTimeInMillis() cannot be referenced from a static context

Error126, 55) error: incompatible types: long cannot be converted to Integer
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 15:18     ListView - как добавлять данные из БД в начало списка? #36
Error126, 39) error: non-static method getTimeInMillis() cannot be referenced from a static context
я ж уже исправил - почувствуй разницу

Error126, 55) error: incompatible types: long cannot be converted to Integer
Ну, дай ты ему этот лонг - пусть подавится
Java
1
long dat = сalendar.getTimeInMillis();
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 15:23  [ТС]     ListView - как добавлять данные из БД в начало списка? #37
да... я тоже так исправил... )))


long dat = Calendar.getInstance().getTimeInMillis();

Добавлено через 28 секунд
только еще пришлось добавить
Цитата Сообщение от Seivan Посмотреть сообщение
getInstance()
Добавлено через 1 минуту
теперь у меня в поле куча циферок... ))))) хочу обратно дату зреть ))
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 15:29     ListView - как добавлять данные из БД в начало списка? #38
Эээээээ, дарагой, так мы далеко не уедем.
Всего-то и надо было заглавную поменять на прописную
У тебя есть класс Calendar и объект-переменная calendar.

Я изменил эти буквы, чтобы было правильно в коде.

А то что ты сделал - это нехорошо.
Ты создал новый, абсолютно левый экземпляр Calendar, информация в которм НЕ соответствует инвормации в твоём текствью (в который она попадает из экземпляра calendar)
Seivan
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 97
23.12.2014, 19:55  [ТС]     ListView - как добавлять данные из БД в начало списка? #39
Спасибо, сделал...

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

Добавлено через 4 часа 6 минут
Подскажите, плиз, как в ListView отобразить дату не в миллисекундах а в нормальном формате даты...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2014, 20:00     ListView - как добавлять данные из БД в начало списка?
Еще ссылки по теме:

Как добавлять дополнительные данные Android
Элемент списка listView и БД SQLlite Android
Android Оформление элемента списка ListView
Android Как добавлять записи в начало списка и ограничивать их количество?
Android Как записывать данные из SQLite в ListView

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

Или воспользуйтесь поиском по форуму:
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
23.12.2014, 20:00     ListView - как добавлять данные из БД в начало списка? #40
Ты всё еще здесь?

Давай сюда код наполнения листвью, лентяй
Yandex
Объявления
23.12.2014, 20:00     ListView - как добавлять данные из БД в начало списка?
Ответ Создать тему
Опции темы

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