Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Pashka92
0 / 0 / 1
Регистрация: 16.04.2013
Сообщений: 7
#1

Не могу получить ID контейнера

04.05.2013, 15:47. Просмотров 509. Ответов 3
Метки нет (Все метки)

ситуация слудующая :

делаю тест, в нем 10-15 вопросов. каждый вопрос = изображение, под ним 4 RadioButton для выбора ответа.
создал xml-файл в котором описывается внешний вид одного вопроса :

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/itemRelativeLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="2dp" >
    <RadioGroup
        android:id="@+id/rgQuest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/image_question"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/image_question"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="5dip"
        android:orientation="horizontal" >
 
        <RadioButton
            android:id="@+id/rbVar1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="OnTestItemRBClick"
            android:text="1" />
        <RadioButton
            android:id="@+id/rbVar2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:onClick="OnTestItemRBClick"
            android:text="2" />
        <RadioButton
            android:id="@+id/rbVar3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:onClick="OnTestItemRBClick"
            android:text="3" />
        <RadioButton
            android:id="@+id/rbVar4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:onClick="OnTestItemRBClick"
            android:text="4" />
    </RadioGroup>
 
    <ImageView
        android:id="@+id/image_question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/image_matrix_1" />
</RelativeLayout>
затем в цикле добавляю сколько мне нужно копий этого :

Java
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
public class Tests extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tests);
 
        LinearLayout linLayout = (LinearLayout) findViewById(R.id.linLayout);
        LayoutInflater ltInflater = getLayoutInflater();
        
        int ImageResMatrix[] = {
                R.drawable.image_matrix_1, R.drawable.image_matrix_2, 
                R.drawable.image_matrix_3, R.drawable.image_matrix_4, 
                R.drawable.image_matrix_5, R.drawable.image_matrix_6,
                R.drawable.image_matrix_7, R.drawable.image_matrix_8, 
                R.drawable.image_matrix_9, R.drawable.image_matrix_10
            };
        
        for (int i = 0; i < ImageResMatrix.length; i++) 
        {
            View item = ltInflater.inflate(R.layout.test_item, linLayout, false);
            ImageView image = (ImageView) item.findViewById(R.id.image_question);
            image.setImageResource(ImageResMatrix[i]);
            ItemId[i] = item.getId();
            linLayout.addView(item);
        }
        View item = ltInflater.inflate(R.layout.result_layout, linLayout, false);
        linLayout.addView(item);
    }
}
теперь самое важное : надо обработать нажатие на RadioButton

Java
1
2
3
4
5
public void OnTestItemRBClick (View v)
{
    RadioButton rb = (RadioButton)findViewById(v.getId());
    rb.setBackgroundColor(Color.GREEN); //какое-то действие для примера
}
проблема в том, что на каком-бы из item-ов я не кликнул по одному из четырех радиобаттонов, (в данном случае) меняется цвет фона только на первом.

Как определить не только какой из 4х баттанов нажат, но и к какой из 10 групп он относится??
(надо сделать массив с ответами, номер item-а был бы индексом, а в зависимости от Id баттона вставлял бы значение от 1 до 4)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2013, 15:47
Ответы с готовыми решениями:

Не могу получить IMEI
Добрый день! Вот, хочу вывести на экран код IMEI и пишу: TelephonyManager...

Не могу получить ссылку на Фрагмент
public class MainActivity extends Activity { @Override protected...

Не могу получить json по https
Доброго времени суток не могу получить json по https коннект проходит ...

Не могу получить ИМЕЙ устройства
Выскакивает ошибка именно при вызове функции getDeviceId(). В чем может быть...

Не могу получить доступ к sdcard на android 6 и 7
В манивесте прописаны &lt;uses-permission...

3
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.05.2013, 16:30 #2
Java
1
2
3
4
5
6
7
8
for (int i = 0; i < ImageResMatrix.length; i++) 
        {
            View item = ltInflater.inflate(R.layout.test_item, linLayout, false);
            ImageView image = (ImageView) item.findViewById(R.id.image_question);
            image.setImageResource(ImageResMatrix[i]);
            item.setTag(i);
            linLayout.addView(item);
        }
Java
1
2
3
4
5
public void OnTestItemRBClick (View v)
{
    v.setBackgroundColor(Color.GREEN); //какое-то действие для примера
    Integer i = (Integer)v.getParent().getParent().getTag();
}
0
Pashka92
0 / 0 / 1
Регистрация: 16.04.2013
Сообщений: 7
04.05.2013, 17:23  [ТС] #3
Цитата Сообщение от V0v1k Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
for (int i = 0; i < ImageResMatrix.length; i++) 
        {
            View item = ltInflater.inflate(R.layout.test_item, linLayout, false);
            ImageView image = (ImageView) item.findViewById(R.id.image_question);
            image.setImageResource(ImageResMatrix[i]);
            item.setTag(i);
            linLayout.addView(item);
        }
Java
1
2
3
4
5
public void OnTestItemRBClick (View v)
{
    v.setBackgroundColor(Color.GREEN); //какое-то действие для примера
    Integer i = (Integer)v.getParent().getParent().getTag();
}
попробовал сделать так.
в методе OnTestItemClick i всегда равна 0, т.е. как и прежде работа идет только с первым item-ом...
посмотрел в дебагере: тэг на каждый итем устанавливается нормально, как надо, а вот при клике что-то не так...

Добавлено через 6 минут
да, кстати
Java
1
Integer i = (Integer)v.getParent().getParent().getTag();
в таком виде не компилирует, говорит что у Parent нет метода getTag();

сделал что-то вроде :
Java
1
2
3
4
RadioButton rb = (RadioButton)findViewById(v.getId());
RadioGroup rg = (RadioGroup)rb.getParent();
View item = (View)rg.getParent();
Integer i = (Integer)item.getTag();
вроде в сущности то же самое, но в таком виде eclipse проглотил и скомпилировал...
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.05.2013, 19:22 #4
Цитата Сообщение от Pashka92 Посмотреть сообщение
да, кстати...
ну, я прямо на форум пишу, нет возможности проверить компилится или нет.

не знаю почему у вас так получается, но можете попробовать при создании каждого вопроса создавать для каждого RadioGroup cвой OnCheckedChangeListener.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2013, 19:22

Клиент-серверное приложение. Не могу получить ip
private String getIpAddress() { String ip = &quot;&quot;; try { ...

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

Карты. Получить данные json из скрытого DIV-контейнера
данные выводятся строками в скрытый контейнер, как мне их оттуда прочитать? в...


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

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

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