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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 435
#1

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

12.01.2015, 01:45. Просмотров 1318. Ответов 27
Метки нет (Все метки)

Доброй ночи.
Заполняю 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>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2015, 01:45     Выбираются все пункты в RadioButton
Посмотрите здесь:
Объединить пункты меню в группу Android
Вставит пункты меню в фрагмент Android
RadioButton в ListView Android
Android Картинки в RadioButton-е
API 24 и RadioButton Android
Google Android RadioButton Android
RadioButton & Fragments Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 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
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
Android RadioButton программным способом
Организовать работу с 4 radioButton Android
Android RadioButton, RadioGroup в ListView
Обработка нажатия на RadioButton Android

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

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

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