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

Выбираются все пункты в RadioButton - Android

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
BigOblom
 Аватар для BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 435
12.01.2015, 01:45     Выбираются все пункты в RadioButton #1
Доброй ночи.
Заполняю ListView строками, состоящими из RadioButton. Загружается все хорошо, но выбирать можно хоть все пункты, снимать нельзя.
Вот код getView
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
 
        View view = convertView;
 
        if (convertView==null){
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            // задаем вид элемента списка, который мы создали выше
            view = inflater.inflate(R.layout.answer_item_radio, null);
        }
 
        // проставляем данные для элементов
        RadioButton radioButton = (RadioButton)view.findViewById(R.id.radioButton);
 
        // получаем элемент со списка
        Answers answersItem = data.get(position);
 
        // устанавливаем значения компонентам одного элемента списка
        radioButton.setText(answersItem.getAnswer());
        radioButton.setTag(answersItem._Id);
 
        return view;
    }
На слое answer_item_radio лежит один RadioButton
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/radioGroup"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal">
 
 
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="New RadioButton"
            android:id="@+id/radioButton"
            android:layout_gravity="center_horizontal"
            android:checked="false" />
    </RadioGroup>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BigOblom
 Аватар для BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 435
12.01.2015, 13:56  [ТС]     Выбираются все пункты в RadioButton #21
Spelcrawler, только TextView, который я заполняю в адаптере.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 14:02     Выбираются все пункты в RadioButton #22
BigOblom
Рабочий такой способ?
В данном виде?
Думаю, что нет

У тебя isMulti - это "глобальная" переменная для вопроса, отражающая множественность выбора.
Почему у тебя признак множественности выбора ответов меняется от нажатия на ответ?
Ответ как-то влият на характеристику вопроса?

В лоб.
Вводим глобальную переменную checkedItemPosition с начальным значением -1 (типа ничего не выбрано).
При каждом клике проверяем.
Если данный пункт не выбран, то checkedItemPosition присваиваем позицию этого пункта, если выбран, то сбрасываем в дефолт.
И вызываем adapter.notifyDataSetChanged()

Все изменения фона элемента списка, естественно, производим в getView адаптера в зависимости от значения checkedItemPosition

Для того, чтобы не морочиться с "//тут как то нужно установить стандартный фон", думаю достаточно будет в getView сначала отработать метод суперкласса, а дальше уже работать с возвращенным этим методом View.

Итого, схематически

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class    MyActivity extends Activity {
 
int checkedItemPosition;
 
...
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ...
        int checkedItemPosition = -1;
    ...
    }
...
 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
 
        View view = super.getView(position, convertView, parent);
 
        if (position==checkedItemPosition)
                                 view.setBackgroundColor(Color.YELLOW);
       
       ...// всё остальное.
 
        return view;
    }
Java
1
2
3
4
5
6
7
8
9
10
11
lvQuestions.setOnItemClickListener( new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                     if (checkedItemPosition != position)
                                 checkedItemPosition = position;
                     else checkedItemPosition = -1;
                     
                     listViewAdapter.notifyDataSetChanged();
            }
        });
Добавлено через 1 минуту
Spelcrawler, извини, но, похоже ты не вник в проблему...и вы двое сейчас делаете, что попало, но не то, что нужно.
Лучше чаю попейте
BigOblom
 Аватар для BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 435
12.01.2015, 14:05  [ТС]     Выбираются все пункты в RadioButton #23

Не по теме:

Armagedo, хорошая идея, на счет чая)


Ухватил мою мысль, я ее никак поймать не мог) А как с мультивыбором?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 14:05     Выбираются все пункты в RadioButton #24
,,,
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
12.01.2015, 14:08     Выбираются все пункты в RadioButton #25
Armagedo, очень даже вник) Просто я писал для случая с множественным выбором. Для не очень больших списков в этом случае удобнее использовать ScrollView вместо ListView - работать будет быстрее. Т.к. ListView при каждом чихе будет полностью перерисовываться, а в ScrollView только то что нужно. У вас же приведен код только для одиночного выбора. А зачем оно вообще? Окрашивать что-то в другой цвет, если выбрать можно только что-то одно? Не проще ли сразу выполнить какое-то действие и перейти на другой экран?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 14:13     Выбираются все пункты в RadioButton #26
Armagedo, очень даже вник)
Думаю, вряд ли...
У человека уже написано немного кода, построены базы.
Просто, кроме него и меня об этом никто не знает

Цитата Сообщение от Spelcrawler Посмотреть сообщение
А зачем оно вообще? Окрашивать что-то в другой цвет, если выбрать можно только что-то одно? Не проще ли сразу выполнить какое-то действие и перейти на другой экран?
Если ты поднимешься немного выше в начало повествования, то обнаружишь, что это предложение не подходит ему, поскольку нужна наглядность ...
Так, что, опять, извини...
BigOblom
 Аватар для BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 435
12.01.2015, 14:15  [ТС]     Выбираются все пункты в RadioButton #27
Spelcrawler, при использовании только TextView без RelativeLayout вся строка не выбирается, выбирается только часть строки, где есть текст. Кстати. От привязки backgroundresource в коде можно избавиться, привязав в слое)
XML
1
2
3
4
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
android:background="@drawable/item_list_selector"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2015, 14:15     Выбираются все пункты в RadioButton
Еще ссылки по теме:

Android Передать данные из radiobutton
Google Android RadioButton Android
Android Картинки в RadioButton-е
API 24 и RadioButton Android
Вставит пункты меню в фрагмент Android

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

Или воспользуйтесь поиском по форуму:
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 14:15     Выбираются все пункты в RadioButton #28
Мне как бы всё равно и я не претендую на поводыря, если что
Yandex
Объявления
12.01.2015, 14:15     Выбираются все пункты в RadioButton
Ответ Создать тему
Опции темы

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