Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для mcGurov
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101

ListView в БД сохранение/восстановление

02.09.2015, 20:37. Показов 1863. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ListView c CheckBoxами, пользователь отмечает некоторые элементы списка, как лучше сохранить его выбор в базу данных? Записывать в String (текстом)? И как потом восстановить выбранные значения, что бы можно было снова отредактировать и сохранить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2015, 20:37
Ответы с готовыми решениями:

Восстановление позиции ListView по возвращении из другого Activity
Доброго времени суток. Имеется activity с ListView, заполняемого из базы данных. При нажатии элемента идёт переход на новое активити с...

Сохранение состояния Checkbox в Listview
Возникла проблема с сохранением состояния checkbox'ов в Listview. Listview состоит из текста, напротив которого стоит чекбокс. Требуется...

Сохранение position элемента ListView при поиске
Если можно подробно описать и показать пример кода не посредственно показывающего сохранение позиции конкретного элемента ListView. т.к....

12
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
02.09.2015, 20:58
mcGurov, int. 1 = true, 0 = false.
1
 Аватар для mcGurov
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
02.09.2015, 21:13  [ТС]
YuraAAA, получается записывать/восстанавливать по id у ChekBox?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
02.09.2015, 21:35
mcGurov, по идее, у Вас должна быть модель данных. Пусть это будет некий работник)


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
public class Employee {
 
    private int id;
    private boolean checked;
    //---------
 
 
    public Employee() {
    }
 
    public Employee(int checked) {
        this.checked = checked == 1;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public boolean isChecked() {
        return checked;
    }
 
 
    public void setChecked(int checked) {
        this.checked = checked == 1;
    }
 
 
}
и DAO:
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
public class EmployeeDAO {
 
    private SQLiteDatabase database;
    private static EmployeeDAO instance;
 
    public static EmployeeDAO getInstance() {
        return instance;
    }
 
 
    public synchronized void init(SQLiteDatabase database) {
        instance = new EmployeeDAO();
        this.database = database;
    }
 
    public void saveEmployee(Employee employee) {
        //TODO
    }
 
    public List<Employee> getEmployers() {
        //TODO
    }
 
    public Employee getById(long id) {
 
    }
 
    public void setChecked(long id, boolean checked) {
        Employee employee = getById(id);
        if (employee != null) employee.setChecked(checked ? 1 : 0);
    }
 
 
}
1
 Аватар для mcGurov
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
03.09.2015, 00:01  [ТС]
YuraAAA, спасибо, но сложновато что-то для понимания )))
А может как-то через массив из булевых значений?
типа
Java
1
final boolean[] checkedItemsArray = {false, true, false};
Добавлено через 1 час 55 минут
Вообщем вернулся всё-таки к модели данных...
Создал class MyList
Кликните здесь для просмотра всего текста
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
public class MyList extends ListActivity  {
 
 
    /** Вызывается, если деятельность создана первый раз. */
 
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // Создает массив строк, чтобы передать их в ListActivity
        ArrayAdapter<Model> adapter = new InteractiveArrayAdapter(this,
                getModel());
        setListAdapter(adapter);
    }
 
    private List<Model> getModel() {
        List<Model> list = new ArrayList<Model>();
        list.add(get("Linux"));
        list.add(get("Windows7"));
        list.add(get("Suse"));
        list.add(get("Eclipse"));
        list.add(get("Ubuntu"));
        list.add(get("Solaris"));
        list.add(get("Android"));
        list.add(get("iPhone"));
        // Первоначальный выбор одного из элементов
        list.get(1).setSelected(true);
        return list;
    }
 
    private Model get(String s) {
        return new Model(s);
    }
 
 
}

Затем класс Model, который содержит название элемента и его содержимое, если он чекнут.
Кликните здесь для просмотра всего текста
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
public class Model {
   //класс содержит название элемента и его содержимое, если он чекнут.
    private String name;
    private boolean selected;
 
    public Model(String name) {
        this.name = name;
        selected = false;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public boolean isSelected() {
        return selected;
    }
 
    public void setSelected(boolean selected) {
        this.selected = selected;
    }

И адаптер
Кликните здесь для просмотра всего текста
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
public class InteractiveArrayAdapter extends ArrayAdapter<Model> {
 
    private final List<Model> list;
    private final Activity context;
 
    public InteractiveArrayAdapter(Activity context, List<Model> list) {
        super(context, R.layout.rowbuttonlayout, list);
        this.context = context;
        this.list = list;
    }
 
    static class ViewHolder {
        protected TextView text;
        protected CheckBox checkbox;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.rowbuttonlayout, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.text = (TextView) view.findViewById(R.id.label);
            viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
            viewHolder.checkbox
                    .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView,
                                                     boolean isChecked) {
                            Model element = (Model) viewHolder.checkbox
                                    .getTag();
                            element.setSelected(buttonView.isChecked());
 
                        }
                    });
            view.setTag(viewHolder);
            viewHolder.checkbox.setTag(list.get(position));
        } else {
            view = convertView;
            ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
        }
        ViewHolder holder = (ViewHolder) view.getTag();
        holder.text.setText(list.get(position).getName());
        holder.checkbox.setChecked(list.get(position).isSelected());
        return view;
    }
 
 
}

И запутался... Как теперь сохранить, а потом восстановить список с расставленными флажками?
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
03.09.2015, 08:31
А чего бы не использовать CursorAdapter? К чему такие сложности?
1
 Аватар для mcGurov
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
03.09.2015, 11:27  [ТС]
Rube, а пример какой-нибудь?
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
03.09.2015, 12:52
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
public class MyCursorAdapter extends SimpleCursorAdapter {
private Cursor c;
private Context context;
private ArrayList<String> list = new ArrayList<String>();
private ArrayList<Boolean> itemChecked = new ArrayList<Boolean>();
 
public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
    super(context, layout, c, from, to);
    this.c = c;
    this.context = context;
    for (int i = 0; i < this.getCount(); i++)
        itemChecked.add(i, false);
}
 
public View getView(final int pos, View inView, ViewGroup parent) {
    if (inView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inView = inflater.inflate(R.layout.your_layout_file, null);
    }
 
    final CheckBox cBox = (CheckBox) inView.findViewById(R.id.bcheck); 
    cBox.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            CheckBox cb = (CheckBox) v.findViewById(R.id.your_checkbox_id);
            if (cb.isChecked())
                itemChecked.set(pos, true);
            else if (!cb.isChecked())
                itemChecked.set(pos, false);
        }
    });
    
    cBox.setChecked(itemChecked.get(pos));
    return inView;
}}
1
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
03.09.2015, 12:57
Цитата Сообщение от Rube Посмотреть сообщение
final CheckBox cBox = (CheckBox) inView.findViewById(R.id.bcheck);
* * cBox.setOnClickListener(new OnClickListener() {
* * * * public void onClick(View v) {
* * * * * * CheckBox cb = (CheckBox) v.findViewById(R.id.your_checkbox_id);
* * * * * * if (cb.isChecked())
* * * * * * * * itemChecked.set(pos, true);
* * * * * * else if (!cb.isChecked())
* * * * * * * * itemChecked.set(pos, false);
* * * * }
* * });
а что тут происходит?)
0
9 / 9 / 2
Регистрация: 14.05.2015
Сообщений: 62
03.09.2015, 16:40
Цитата Сообщение от YuraAAA Посмотреть сообщение
а что тут происходит?)
Проверка состояния по нажатию CheckBox
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
03.09.2015, 17:13
Amrel, двух разных?)
0
9 / 9 / 2
Регистрация: 14.05.2015
Сообщений: 62
03.09.2015, 17:39
Цитата Сообщение от YuraAAA Посмотреть сообщение
двух разных?)
По клику на CheckBox1 проверяется CheckBox2 зачем? не знаю... Мистика...
Думаю автор ошибся хотел написать так:
Java
1
2
3
4
5
6
7
8
9
10
CheckBox cBox = (CheckBox) inView.findViewById(R.id.bcheck); 
   cBox.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    
    if (cBox.isChecked())
         textView.set("cBox" + true);
       else 
         textView.set("cBox" + false);
     }
   });
я бы написал так:

Java
1
2
3
4
5
6
CheckBox cBox = (CheckBox) inView.findViewById(R.id.bcheck); 
   cBox.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
         textView.set("cBox" + cBox.isChecked());
     }
   });
1
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
03.09.2015, 17:59
Amrel, а я бы написал setOnCheckedChangeListener вместо onClick-a
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.09.2015, 17:59
Помогаю со студенческими работами здесь

Сохранение/восстановление дерева
Здравствуйте! В программе имеется TreeView, структура в которого подгружается из ini файла. Как реализовать сохранение последнего...

Сохранение ListView
Добрый день. Сохраняю ListView таким кодом var Writer : TWriter; FileStream : TFileStream; begin ...

Code First сохранение и восстановление данных
Совсем недавно начал изучать создание сайтов с использованием MVC, Entity Framework Code First и столкнулся с распространённой проблемой:...

Сохранение классов на диск и их восстановление
Вот тут есть такая ситуэйшн: нужно сохранить класс, как я и делаю, но вот этот класс содержит в себе ОЧЕНЬ много членов, те в свою очердь...

Сохранение восстановление Чеков TreeView
Вопрос простой, но погуглил и ничего не нашел. Есть TreeView1 c checkboxсами. Хотелось сохранить в параметрах My.Settings состояние...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru