1

我有ListAdapter哪个类别的 TextView 填充列表,并且RadioButton要检查哪个。所以,问题是我希望用户通过 List 定义他想要的类别,当他点击时RadioButton,其他人应该被取消选中等等。我需要以某种方式设置此 RadioButtons 的 ID,并且我正在getView(...)方法中执行此操作,ListAdapter但是当它第二次调用该方法时,他没有找到该方法,RadioButton并且在尝试设置此 RadioButton 视图的 ID 时出现错误。我正在调试它,第一次它通过 method 找到了视图findViewById,但第二次没有。

我想我可能知道它的问题 - >当它第二次通过 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 中的一些解决方法。

4

1 回答 1

0

通过使用,您正在更改与用于在视图树中查找它的setId()关联的标识符。RadioButton您可能应该setTag()改用它,这在此处记录。此方法允许您将一些不透明的数据对象附加到稍后可以使用该getTag()方法检索的视图。

于 2013-08-27T14:05:03.153 回答