私はテキストと3つのラジオボタンを持つリストビューを持っています。ラジオボタンを選択してリストをスクロールすると、ラジオボタンが選択されなくなります。私はラジオボタンが選択されている項目のIDを維持しており、アダプタのGetviewで必要なラジオボタンを選択するように設定しています。デバッグでは、文setChecked(true)
を実行していますが、ラジオボタンはまだチェックされていません。私はsetSelected(true)
ラジオグループ((RadioButton)holder.rg.getChildAt(2)).setChecked(true);
を介して設定しようとしましたが、何も動作していないようです。ラジオボタンsetChecked/setSelectedが機能しない
XML:
<TextView
android:id="@+id/refill_product_name"
android:layout_width="0dp"
android:layout_weight="0.5"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/hello_world"
android:textColor="@android:color/black"
android:textStyle="normal"
android:textSize="@dimen/item_sub_heading"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"/>
<RadioGroup
android:id="@+id/refill_product_rg"
android:layout_width="0dp"
android:layout_weight="0.5"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<RadioButton
android:id="@+id/refill_product_regular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/regular"
android:textColor="@android:color/black"
android:textStyle="bold"
android:buttonTint="@color/primary"/>
<RadioButton
android:id="@+id/refill_product_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/small"
android:textColor="@android:color/black"
android:textStyle="bold"
android:layout_marginLeft="@dimen/radio_btn_margin"
android:buttonTint="@color/primary"/>
<RadioButton
android:id="@+id/refill_product_extra_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/extra_small"
android:textColor="@android:color/black"
android:textStyle="bold"
android:layout_marginLeft="@dimen/radio_btn_margin"
android:buttonTint="@color/primary"/>
</RadioGroup>
アダプターコード:アダプタで
private class ViewHolder {
TextView productName;
RadioButton regularBtn, smallBtn, extraSmallBtn;
RadioGroup rg;
}
getViewメソッドメソッド
holder.rg.clearCheck();
if (mAppSession.getSelRefillProducts() != null) {
for (RefillProduct pr : mAppSession.getSelRefillProducts()) {
if (pr.getProductId() == rf.getProductId()) {
if (pr.getSize().equals("R")) {
((RadioButton)holder.rg.getChildAt(0)).setChecked(true);
} else if (pr.getSize().equals("S")) {
holder.smallBtn.setSelected(true);
} else if (pr.getSize().equals("XS")) {
((RadioButton)holder.rg.getChildAt(2)).setChecked(true);
}
}
}
}
私は私が何かをしないのですかどうかわからないけど、setCheckedたりするsetSelectedではありませんワーキング。お知らせ下さい。
'setSelected'は**完全**何か他のものです。それが動作することを期待しないでください。さて、 'setChecked'がなぜ機能しないのかを見てみましょう。 'android:clickable =" true "'をラジオボタンに追加して、違いがあるかどうか確認してください。 – Vucko
推奨どおりに試してみてください。しかし、期待どおり、違いはありません。実際には、選択されたラジオボタンがチェックされず、ラジオボタンがチェックされていないので、リサイクルビューの問題ではないようです。 – Gaurav
すべてのアイテムのラジオボタンを単一のメソッドでループすることはできません。単一の 'holder'オブジェクトを使用します。すべてのラジオボタンではなく、1つのラジオボタンだけをチェックします** –