С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
1

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

12.01.2015, 01:45. Просмотров 1720. Ответов 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
Ответы с готовыми решениями:

Объединить пункты меню в группу
Не могу найти как объединить меню в группы, чтобы потом можно было удобно ими...

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

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

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

Игра в покер - из колоды выбираются не все карты при раздаче
Всем доброго времени суток. Перейду сразу к делу. Постараюсь кратко и четко...

27
semiromid
7 / 7 / 2
Регистрация: 28.08.2014
Сообщений: 179
12.01.2015, 02:55 2
Рабочий вариант, попробуйте.

XML
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
<RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:orientation="vertical" >
 
        <RadioButton
            android:id="@+id/radioButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:text="1"
            android:textSize="20sp" />
 
        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:text="2"
            android:textSize="20sp" />
 
        <RadioButton
            android:id="@+id/radioButton3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="3"
            android:textSize="20sp" />
    </RadioGroup>
Добавлено через 5 минут
То есть в каждой ячейке ListView всего один RadioButton? Если он один он и не будет влиять на другие RadioButton.

Добавлено через 2 минуты
Если это так и есть, то Вам лучше сделать кнопками. Это я так думаю.
0
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 09:33  [ТС] 3
semiromid, у меня их несколько, подгружаются через getView. В конечном итоге, схема должна получиться как у вас.
0
Armagedo
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 09:37 4
BigOblom, чё-то ты перемудрил...

Если у тебя единичный выбор ответа, то мог радиобаттоны и не использовать, а опять же просто повесить на листвью AdapterView.OnItemClickListener и отработать onItemClick.

Если множественный выбор, то нужны CheckBox.
0
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 09:41  [ТС] 5
Armagedo, ну у меня они разные, могут быть единичные, могут из нескольких вариантов. Мне же надо при нажатии еще показать, что пункт выбран, бэкграунд поменять у элемента. А в случае с множественным выбором, 1 раз нажал, подсветилось, 2й раз нажал убралась подсветка.
0
Armagedo
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 09:55 6
Мысли вслух...
Вводи доп. атрибут для вопроса - допускается ли множественный выбор ответов.
Если да - формируешь список на основе лэйаута элемента списка, который с чекбоксами.

Если нет - с радиобаттонами. Но радиобаттоны придется обслуживать самому. Нажал в одном месте - убил в других местах.
Но с этим возможен гемор, как я почитаю
Второй вариант здесь, кмк - это использовать не список, а RadioGroup внутри ScrollView...
0
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 12:15  [ТС] 7
Armagedo, что то не хочется мне с RadioButtons возиться) Как то можно это сделать с имеющимися TextView? Например при клике менять фон, при повторном клике возвращать фон в исходное положение.
Пробую как то так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
lvQuestions.setOnItemClickListener( new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                if(isMulti == false) { //если нужен одиночный выбор
                    view.setBackgroundColor(Color.YELLOW);
                    isMulti = true;
                }
                else {
                    view.setBackgroundColor(Color.BLUE); //тут как то нужно установить стандартный фон
                    isMulti = true;
                }
            }
        });
Рабочий такой способ?

Добавлено через 40 минут
Вот так нормально меняет цвет, но не у одного item. Если например я нажал на первый, он подкрасился, нажал на второй, первый итем остается с подсветкой, а ко второму применяется прозрачность. Жму на третий, к нему снова применяется подсветка. Нужно как то по ид привязаться. Это я пока пробую реализовать список с одиночным выбором.

Добавлено через 20 секунд
Java
1
2
3
4
5
6
7
8
9
if(isMulti == false) {
                    view.setBackgroundColor(Color.rgb(22, 179, 147));
                    isMulti = true;
                }
 
                else {
                    view.setBackgroundColor(Color.TRANSPARENT);
                    isMulti = false;
                }
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.01.2015, 12:54 8
BigOblom, немножко допишите класс TextView:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 public class MyTextView extends TextView {
 
        private boolean isActivated = false;
 
        public myTextView(Context context) {
            super(context);
        }
 
        public myTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
 
        public myTextView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
 
        public void switchState(){
            isActivated = !isActivated;
            setBackgroundColor(isActivated ? activatedColor : deactivatedColor);
        }       
 
    }
и потом в OnItemClickListener:
Java
1
((MyTextView)view).switchState;
1
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 13:04  [ТС] 9
Spelcrawler, при нажатии критует.
В отладке посмотрел, критует в файле ZygoteInit.java на строке pid
Java
1
2
3
4
5
6
7
8
9
static native int setregid(int rgid, int egid);
 
    /**
     * Invokes the linux syscall "setpgid"
     *
     * @param pid pid to change
     * @param pgid new process group of pid
     * @return 0 on success or non-zero errno on fail
     */
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.01.2015, 13:06 10
BigOblom, не может этот код там критовать. Где то еще должна быть ошибка.
0
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 13:08  [ТС] 11
Spelcrawler, вот текст ошибки
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to ru.hexff.createdb.QuestionsActivity$myTextView
    at ru.hexff.createdb.QuestionsActivity$1.onItemClick(QuestionsActivity.java:149)
    at android.widget.AdapterView.performItemClick(AdapterView.java:299)
    at android.widget.AbsListView.performItemClick(AbsListView.java:1129)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2927)
    at android.widget.AbsListView$3.run(AbsListView.java:3676)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5047)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:807)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623)
    at dalvik.system.NativeStart.main(Native Method)
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.01.2015, 13:14 12
XML
1
java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to ru.hexff.createdb.QuestionsActivity$myTextView
вот ошибка - кастуете на myTextView RelativeLayout.
0
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 13:23  [ТС] 13
Spelcrawler, ну разметка lyout, который я использую в адаптере такая
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/item_list_selector">
 
    <TextView
        android:layout_width="wrap_content"
        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" />
</RelativeLayout>
Попробовал сделать так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class myRelativeLayout extends RelativeLayout {
 
        private boolean isActivated = false;
 
        public myRelativeLayout(Context context) {
            super(context);
        }
 
        public myRelativeLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
 
        public myRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
 
        public void switchState(){
            isActivated = !isActivated;
            setBackgroundColor(isActivated ? Color.rgb(22, 179, 147) : Color.TRANSPARENT);
        }
    }
Не катит. Ошибку выдает такую
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to ru.hexff.createdb.QuestionsActivity$myRelativeLayout
    at ru.hexff.createdb.QuestionsActivity$1.onItemClick(QuestionsActivity.java:150)
    at android.widget.AdapterView.performItemClick(AdapterView.java:299)
    at android.widget.AbsListView.performItemClick(AbsListView.java:1129)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2927)
    at android.widget.AbsListView$3.run(AbsListView.java:3676)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5047)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:807)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623)
    at dalvik.system.NativeStart.main(Native Method)
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.01.2015, 13:29 14
А зачем оборачивать единственный TextView в RelativeLayuot? Сделайте сразу так:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ru.hexff.createdb.QuestionsActivity.myTextViev
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        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
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 13:32  [ТС] 15
Spelcrawler, у меня еще на нем стоят такие стили
item_list_selector.xml
XML
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Когда по элементу списка нажали применять item_bg_hover.xml -->
    <item android:drawable="@drawable/item_bg_hover"
        android:state_pressed="true" />
 
    <!-- Когда стоит фокус на элементе списка то применить item_bg_hover.xml -->
    <item android:drawable="@drawable/item_bg_hover"
        android:state_focused="true" />
</selector>
item_bg_hover.xml
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <solid android:color="#ff16b393" />
</shape>
Их как в коде прописать?
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.01.2015, 13:35 16
Цитата Сообщение от BigOblom Посмотреть сообщение
Их как в коде прописать?
Java
1
tv.setBackground(R.drawable.item_bg_hover);
1
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
12.01.2015, 13:35  [ТС] 17
Spelcrawler, ок. Сейчас попробую переделать.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.01.2015, 13:40 18
BigOblom, не тот бекграунд написал
Цитата Сообщение от Spelcrawler Посмотреть сообщение
tv.setBackground(R.drawable.item_bg_hover);
Нужно R.drawable.item_list_selector.
0
BigOblom
121 / 121 / 17
Регистрация: 30.06.2010
Сообщений: 457
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
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.01.2015, 13:55 20
А что там еще есть в строке кроме текста?
0
12.01.2015, 13:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2015, 13:55

СМА LG F8068LD1, Выбираются все программы при нажатии старт не стартует
Все питание в норме, все звонится, все светодиоды звонятся, по дидам связанным...

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

В файл записать все отмеченые пункты в checkedListBox?
Подскажите какой метод выбрать, есть такой кусок кода (запись в файл) : ...


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

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

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