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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
#1

Глюк чекбоксов - Программирование Android

15.02.2013, 00:44. Просмотров 1362. Ответов 20
Метки нет (Все метки)

Проблема состоит в том что у меня создается список чекбоксов, но когда их количество превышает 9 штук - тут начинается самое интересное, когда я ставлю галочку в 1-м чекбоксе -автоматически ставится галочка в 9, во 2-м - тогда и 10 тоже....
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
private Test s (){
    Test test = new Test();
    Questions question = new Questions();
    question.SetQuestion("Voprosik nomer 1?");
    Answers answer = new Answers();
    answer.setAnswer("dd");
    List<Answers> aa = new ArrayList<Answers>(); 
    Answers[] an = new Answers[30];
    String[] answeri = {"Jeltogo","Zelenogo","Krasnogo","Chernogo","Fioletovogo","1","2","3","4","5","6"};
    for (int i = 0; i < answeri.length; i++) {
        an[i] = new Answers();
        an[i].setAnswer(answeri[i]);
        aa.add(an[i]);
    }
 
    question.SetAnswers(aa);
    
    
    List<Questions> que = new ArrayList<Questions>();
    que.add(question);
    test.setQuestions(que);
    return test;
}     
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
          final Context context = this;
          final Button butnext = (Button)findViewById(R.id.buttonNext);
          final  TextView tv =(TextView)findViewById(R.id.textViewQuestion);
        //poly4enie voprosa
        final Test test = s();
        final Iterator<Questions> itera = test.getQuestions().iterator();
        final Questions q = itera.next();
        List<Answers> a = q.getAnswers();
        // массивы данных
        String[] texts = new String[30];
        
        int j = 0;
        for (Iterator<Answers> iter = a.iterator(); iter.hasNext(); ) {
            texts[j] = iter.next().getAnswer();
            j++;
        }
 
        // упаковываем данные в понятную для адаптера структуру
        ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(
            texts.length);
        Map<String, Object> m;
        for (int i = 0; i < texts.length; i++) {
          m = new HashMap<String, Object>();
          if(texts[i]!=null){
          m.put(ATTRIBUTE_NAME_TEXT, texts[i]);
          data.add(m);}
        }
 
        // массив имен атрибутов, из которых будут читаться данные
        String[] from = { ATTRIBUTE_NAME_TEXT};
        // массив ID View-компонентов, в которые будут вставлять данные
        int[] to = { R.id.cbChecked};
 
        // создаем адаптер
        SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.item,
            from, to);
 
        // определяем список и присваиваем ему адаптер
        lvSimple = (ListView) findViewById(R.id.lvSimple);
        tv.setText(q.getQuestion());
        lvSimple.setAdapter(sAdapter);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2013, 00:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Глюк чекбоксов (Программирование Android):

Checkbox как узнать на которых чекбоксов стоит галочка - Программирование Android
Здравствуйте. Есть 4 checkbox-a При нажатии кнопки нужно вывести какой из чекбоксов выбран. На данный момент нашел пример, но он...

Глюк SQLite? - Программирование Android
Есть столбец таблицы, описанный как &quot;INTEGER NOT NULL DEFAULT 0&quot; По ошибке записал в него не число, а строку &quot;CreatedOnPDA&quot;. И поле...

Глюк Android Studio - Программирование Android
Вопрос может быть очень нубской, но.. Около месяца всё хорошо работало, но сегодня, при запуске и создании нового модуля появляется такая...

Странный глюк IntelliJ IDEA - Программирование Android
IntelliJ IDEA 2016.1.3 Столкнулся с таким: if (_Константа_ || Функция()) { //...... }

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

Интересный глюк. Или не глюк? Смена дефолтного пути - C#
Вкратце объясняю: Есть приложение, которое подключается к БД Access. Путь к файлу БД в строке подключения прописываю просто как имя...

20
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 00:58 #2
адаптер использует повторно вьюшки которые спрятались за пределы видимости.
0
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
15.02.2013, 01:02  [ТС] #3
Цитата Сообщение от V0v1k Посмотреть сообщение
адаптер использует повторно вьюшки которые спрятались за пределы видимости.
не подскажешь как решить проблему эту?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 01:25 #4
ну, самый очевидный способ это переопределить getView в адаптере и сбрасывать/устанавливать галочку где нужно, но мне кажется есть более правильный подход с установлением ChoiceMode CHOICE_MODE_MULTIPLE и использованием Checkable вьюшек, а может и нет)

Добавлено через 18 минут
хотя в любом случае использование ChoiceMode и Checkable более красивое решение.
0
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
15.02.2013, 01:52  [ТС] #5
Цитата Сообщение от V0v1k Посмотреть сообщение
ну, самый очевидный способ это переопределить getView в адаптере и сбрасывать/устанавливать галочку где нужно, но мне кажется есть более правильный подход с установлением ChoiceMode CHOICE_MODE_MULTIPLE и использованием Checkable вьюшек, а может и нет)

Добавлено через 18 минут
хотя в любом случае использование ChoiceMode и Checkable более красивое решение.
если можно то поподробнее с Checkable можете растолковать?

Добавлено через 18 минут
А если просто в цикле для каждого элемента создавать чекбокс, не используя адаптер, то проблемма по идее не должна повторится?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 02:08 #6
Цитата Сообщение от San4oPanso Посмотреть сообщение
если можно то поподробнее с Checkable можете растолковать?
Есть интерфейс Checkable, пример реализации CheckedTextView
Используется вместе с установкой ChoiceMode.
Должно гарантировать корректную работу списка если нужна возможность выбора одного из многих или много из многих элементов списка.


Цитата Сообщение от San4oPanso Посмотреть сообщение
А если просто в цикле для каждого элемента создавать чекбокс, не используя адаптер, то проблемма по идее не должна повторится?
не понимаю.
0
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
15.02.2013, 02:11  [ТС] #7
Цитата Сообщение от V0v1k Посмотреть сообщение
Есть интерфейс Checkable, пример реализации CheckedTextView
Используется вместе с установкой ChoiceMode.
Должно гарантировать корректную работу списка если нужна возможность выбора одного из многих или много из многих элементов списка.



не понимаю.
Вот
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
LinearLayout ll = new Linierlayout(getApplicationContext());
 
for(int i =0; i<= how many checkbox u want; i++)
 
{
 
CheckBox cb = new CheckBox(getApplicationContext());
 
cb.setText("I'm dynamic!");
 
ll.addView(cb);
 
}
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 02:18 #8
ну да, только это уже не список и LayoutParams не забудьте.

Добавлено через 4 минуты
а если в списке должно быть 1000 пунктов, вы будете создавать 1000 CheckBox'ов?
0
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
15.02.2013, 02:23  [ТС] #9
Цитата Сообщение от V0v1k Посмотреть сообщение
ну да, только это уже не список и LayoutParams не забудьте.

Добавлено через 4 минуты
а если в списке должно быть 1000 пунктов, вы будете создавать 1000 CheckBox'ов?
Спасибо, а вот если использовать Checkble, то мне как, обрабатывать когда человек ставит галочку и запрещать в этот момент чекбл для других чекбоксов?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 02:25 #10
опять не понял)
0
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
15.02.2013, 02:37  [ТС] #11
Цитата Сообщение от V0v1k Посмотреть сообщение
опять не понял)
Я понял что надо тут как ни будь применить Checkble тобы чекбоксы мои не повторялись, но я совсем не понимаю как,хоть убей)
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 02:38 #12
R.layout.item как выглядит?
0
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
15.02.2013, 02:44  [ТС] #13
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal">
<LinearLayout
 android:id="@+id/linearLayout1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 android:orientation="vertical">
<CheckBox
 android:id="@+id/cbChecked"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="@string/answer_not_found"
 
 >
</CheckBox>
</LinearLayout>
</LinearLayout>
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.02.2013, 03:05 #14
я имел ввиду item.xml

в общем, вот пример реализации Checkble

Добавлено через 59 секунд
в чем смысл LinearLayout'ов здесь?

Добавлено через 2 минуты
XML
1
2
3
4
5
6
<CheckBox
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/cbChecked"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="@string/answer_not_found" />
этого достаточно.

и в лист добавьте
XML
1
android:choiceMode="multipleChoice"
0
San4oPanso
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 96
15.02.2013, 03:31  [ТС] #15
Цитата Сообщение от V0v1k Посмотреть сообщение
я имел ввиду item.xml

в общем, вот пример реализации Checkble

Добавлено через 59 секунд
в чем смысл LinearLayout'ов здесь?
это забыл удалить когда чистил файл от ненужных вьюшек) я посмотрел ссылку но что то яснее ситуация не стала для меня)чувствую себя дном каким то)

Добавлено через 23 минуты
Цитата Сообщение от V0v1k Посмотреть сообщение
я имел ввиду item.xml

в общем, вот пример реализации Checkble

Добавлено через 59 секунд
в чем смысл LinearLayout'ов здесь?

Добавлено через 2 минуты
XML
1
2
3
4
5
6
<CheckBox
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/cbChecked"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="@string/answer_not_found" />
этого достаточно.

и в лист добавьте
XML
1
android:choiceMode="multipleChoice"
теперь когда ставишь галочку и прокручиваешь так чтобы чекбокс вышел за пределы видимости, то галочка пропадает(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2013, 03:31
Привет! Вот еще темы с ответами:

Глюк печатания и глюк порчи константы - C++
Дамы и господа! Я столкнулся с двумя глюками, которые не нашёл в списке распространённых ошибок. 1) При попытке распечатать массив...

5 чекбоксов из 10 - Delphi
Добрый день! У меня есть 10 чекбоксов, как сделать так чтобы можно было выбрать только 5 штук и если будет не равно 5 то будет выводиться...

Проверка чекбоксов - JavaScript
Делаю форму с завитушками. Выглядит так: http://www.cyberforum.ru/attachment.php?attachmentid=305724&amp;stc=1&amp;d=1378733508 Если...

Значения чекбоксов - JavaScript
Доброго дня форумчане, а может и кому то ночи)) при помощи божьей и гугла конечно же требовалось создать калькулятор расчёта стоимости...


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

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

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