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

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

Войти
Регистрация
Восстановить пароль
 
Pashka92
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 7
04.05.2013, 15:47     Не могу получить ID контейнера #1
ситуация слудующая :

делаю тест, в нем 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2013, 15:47     Не могу получить ID контейнера
Посмотрите здесь:

Не могу получить ИМЕЙ устройства Android
Android клиент-серверное приложение. Не могу получить данные с сервера Android
Android Клиент-серверное приложение. Не могу получить ip
Android Не могу получить достук к объекту в другом xml
Android Не могу получить ссылку на Фрагмент

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.05.2013, 16:30     Не могу получить ID контейнера #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();
}
Pashka92
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 7
04.05.2013, 17:23  [ТС]     Не могу получить ID контейнера #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 проглотил и скомпилировал...
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.05.2013, 19:22     Не могу получить ID контейнера #4
Цитата Сообщение от Pashka92 Посмотреть сообщение
да, кстати...
ну, я прямо на форум пишу, нет возможности проверить компилится или нет.

не знаю почему у вас так получается, но можете попробовать при создании каждого вопроса создавать для каждого RadioGroup cвой OnCheckedChangeListener.
Yandex
Объявления
04.05.2013, 19:22     Не могу получить ID контейнера
Ответ Создать тему
Опции темы

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