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

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

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

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

12.01.2015, 01:45. Просмотров 1431. Ответов 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>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2015, 01:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выбираются все пункты в RadioButton (Программирование Android):

Вставит пункты меню в фрагмент - Программирование Android
Всем добра. Подскажите, как продублировать пункты меню, из navigation drawer, в фрагмент. По примеру как на скриншоте:

Объединить пункты меню в группу - Программирование Android
Не могу найти как объединить меню в группы, чтобы потом можно было удобно ими управлять. Если создавать пункты меню через menu.add(), то...

Нужно написать меню, управляемое стрелочками. Есть код, но все пункты в ряд и не выбираются - PascalABC.NET
Вот сам код, подскажите, пожалуйста, как правильно сделать чтоб можно было выбирать стрелочками и чтою пункты были в столбик. program...

Создать меню, пункты которого выбираются стрелками - Turbo Pascal
Нужно составить программу с пользовательским меню, разделы которого можно выберать на стрелочках с клавиатуры, после выбора и нажати ввода,...

Игра в покер - из колоды выбираются не все карты при раздаче - C (Си)
Всем доброго времени суток. Перейду сразу к делу. Постараюсь кратко и четко описать суть программы: Есть двумерный массив, это...

Как перебрать все пункты меню ? - .NET
т.е. если заранее не известно сколько MenuItems содержится в MainMenu..

27
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
12.01.2015, 13:35 #16
Цитата Сообщение от BigOblom Посмотреть сообщение
Их как в коде прописать?
Java
1
tv.setBackground(R.drawable.item_bg_hover);
1
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 444
12.01.2015, 13:35  [ТС] #17
Spelcrawler, ок. Сейчас попробую переделать.
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
12.01.2015, 13:40 #18
BigOblom, не тот бекграунд написал
Цитата Сообщение от Spelcrawler Посмотреть сообщение
tv.setBackground(R.drawable.item_bg_hover);
Нужно R.drawable.item_list_selector.
0
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 444
12.01.2015, 13:44  [ТС] #19
Spelcrawler, ага. Я уже попробовал. и вместо
Java
1
tv.setBackground
нужно
Java
1
tv.setBackgroundResource
Добавлено через 2 минуты
Spelcrawler, сделал. Подсвечивается не вся строка, а только где есть текст.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/item_list_selector"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Large Text"
    android:id="@+id/textView"
    android:clickable="false"
    android:focusable="false"
    android:padding="@dimen/abc_action_bar_icon_vertical_padding_material"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="0dp"
    android:layout_alignParentTop="true"
    android:layout_marginTop="0dp"
    android:layout_alignParentEnd="true"
    android:textSize="@dimen/abc_text_size_medium_material" />
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
12.01.2015, 13:55 #20
А что там еще есть в строке кроме текста?
0
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 444
12.01.2015, 13:56  [ТС] #21
Spelcrawler, только TextView, который я заполняю в адаптере.
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 14:02 #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, извини, но, похоже ты не вник в проблему...и вы двое сейчас делаете, что попало, но не то, что нужно.
Лучше чаю попейте
1
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 444
12.01.2015, 14:05  [ТС] #23

Не по теме:

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


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

Цитата Сообщение от Spelcrawler Посмотреть сообщение
А зачем оно вообще? Окрашивать что-то в другой цвет, если выбрать можно только что-то одно? Не проще ли сразу выполнить какое-то действие и перейти на другой экран?
Если ты поднимешься немного выше в начало повествования, то обнаружишь, что это предложение не подходит ему, поскольку нужна наглядность ...
Так, что, опять, извини...
0
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 444
12.01.2015, 14:15  [ТС] #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"
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 14:15 #28
Мне как бы всё равно и я не претендую на поводыря, если что
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2015, 14:15
Привет! Вот еще темы с ответами:

В файл записать все отмеченые пункты в checkedListBox? - C#
Подскажите какой метод выбрать, есть такой кусок кода (запись в файл) : private void button1_Click(object sender, EventArgs e) ...

Составить маршрут, который бы проходил через все пункты - Prolog
Помогите, пожалуйста, решить задачу: Составить маршрут, который бы проходил через все пункты, некоторые из которых связаны напрямую и через...

Скрыть все пункты древовидного меню кроме активного - JavaScript
Здравствуйте, есть древовидная менюшка которая раскрывается при наведении как можно сделать чтобы при перемещении по меню по...

Обозреватель объектов Visual Studio 2010 показывает не все пункты - Visual Studio
Обозреватель объектов Visual Studio 2010 показывает не все пункты. К примеру отображает аргументы listBox, а аргументы этих аргументов уже...


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

Или воспользуйтесь поиском по форуму:
28
Yandex
Объявления
12.01.2015, 14:15
Ответ Создать тему
Опции темы

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