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

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

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

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

12.01.2015, 01:45. Просмотров 1382. Ответов 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
Всем добра. Подскажите, как продублировать пункты меню, из navigation drawer, в фрагмент. По примеру как на скриншоте:

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
semiromid
7 / 7 / 2
Регистрация: 28.08.2014
Сообщений: 177
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 минуты
Если это так и есть, то Вам лучше сделать кнопками. Это я так думаю.
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 443
12.01.2015, 09:33  [ТС] #3
semiromid, у меня их несколько, подгружаются через getView. В конечном итоге, схема должна получиться как у вас.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
12.01.2015, 09:37 #4
BigOblom, чё-то ты перемудрил...

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

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

Если нет - с радиобаттонами. Но радиобаттоны придется обслуживать самому. Нажал в одном месте - убил в других местах.
Но с этим возможен гемор, как я почитаю
Второй вариант здесь, кмк - это использовать не список, а RadioGroup внутри ScrollView...
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 443
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;
                }
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 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;
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 443
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
     */
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
12.01.2015, 13:06 #10
BigOblom, не может этот код там критовать. Где то еще должна быть ошибка.
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 443
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)
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 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.
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 443
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)
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 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" />
Да зачем вообще разметка, параметров минимум - назначьте их в коде, проблем меньше будет.
BigOblom
118 / 118 / 7
Регистрация: 30.06.2010
Сообщений: 443
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>
Их как в коде прописать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2015, 13:32
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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