2013-08-27 5 views
1

У меня есть ListAdapter, который заполняет список TextView категории и RadioButton, который необходимо проверить. Таким образом, проблема в том, что я хочу, чтобы пользователь определял, какую категорию он хочет в списке, и когда он нажимает на RadioButton, другие должны быть сняты и т. Д. Мне нужно как-то установить идентификатор этого RadioButtons, и я делаю это в методе getView(...) в ListAdapter, но когда он вызывает второй раз этот метод, он не находит, что RadioButton, и я получаю ошибку при попытке установить ID это представление RadioButton. Я отлаживал его, и первый раз он находит вид через метод findViewById, но второй раз это не так.ListAdapter не получает вид

Я думаю, что, возможно, я знаю, что проблема для него -> когда второй раз, чтобы найти представление по ID, он не может найти его, так как я положил уже другой Идентификатор при первом вызове, но как я могу установить уникальные идентификаторы для моих RadioButtons в списке?

Вот мой код: GetView:

public View getView(int index, View view, ViewGroup parent) { 

    if (view == null){ 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     view = inflater.inflate(R.layout.category_item, parent, false); 
    } 

    ListCategoryItem category = categories.get(index); // categories is list 

    TextView title = (TextView) view.findViewById(R.id.categoryTitle); 
    naziv.setText(kategorija.getNazivKategorije()); 

    RadioButton radioBtn = (RadioButton) view.findViewById(R.id.categoryRadioButton); 
    radioBtn.setId(category.getIdCategory()); 

    return view; 
} 

и вот мой макет для category_item:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 


<TextView 
    android:id="@+id/categoryTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:paddingTop="5dp" 
    /> 

<RadioButton 
    android:id="@+id/categoryRadioButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:textSize="15sp" 
    android:onClick="onRadioButtonClick"/> 

Итак, как установить уникальный идентификатор для моих Radiobuttons или я могу каким-то образом создать группу RadioButtons, которая будет заботиться о себе, когда другая проверены, другие - неконтролируемые - что-то, как в HTML-решении.

+2

Посмотрите http://stackoverflow.com/questions/7329856/how-to-use-radiogroup-in-listview-custom-adapter – trebron

+0

Спасибо, что помогло, и этот пост: http: //developmentality.wordpress .com/2010/11/05/из резиновых штампов-и-флажки-почему-ваш-ListView-это-испорченные / – Tommz

ответ

0

Используя setId(), вы меняете идентификатор, связанный с RadioButton, который используется для поиска его в дереве просмотра. Вероятно, вы должны использовать setTag(), что задокументировано here. Этот метод позволяет прикрепить непрозрачный объект данных к представлению, которое может быть получено позже, используя метод getTag().

Смежные вопросы