- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 RadioGroup 实现了 CustomListView。当我选择第一行/开始行的单选按钮并滚动到列表末尾时,会自动选择最后一行元素。当我滚动回到列表的开头时,Radiogroup 状态不会得到维护。我在这个问题上花了很多时间。请帮助我解决我做错的地方。
MyAdapter.java
public class MyAdapter extends ArrayAdapter<Model> {
private final List<Model> list;
private final Activity context;
public MyAdapter(Activity context, List<Model> list) {
super(context, R.layout.row, list);
this.context = context;
this.list = list;
}
static class ViewHolder {
protected TextView text;
protected RadioGroup radioGroup;
protected RadioButton firstRadio;
protected RadioButton secondRadio;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
convertView = inflator.inflate(R.layout.row, null);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.label);
viewHolder.radioGroup = (RadioGroup) convertView.findViewById(R.id.radio_group);
viewHolder.firstRadio = (RadioButton) convertView.findViewById(R.id.first_rad);
viewHolder.secondRadio = (RadioButton) convertView.findViewById(R.id.second_rad);
viewHolder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int selectedID) {
int getPosition = (Integer) radioGroup.getTag(); // Here we get the position that we have set for the checkbox using setTag.
list.get(getPosition).setSelected(selectedID); // Set the value of checkbox to maintain its state.
}
});
convertView.setTag(viewHolder);
convertView.setTag(R.id.label, viewHolder.text);
convertView.setTag(R.id.radio_group, viewHolder.radioGroup);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.radioGroup.setTag(position); // This line is important.
viewHolder.text.setText(list.get(position).getName());
if(list.get(position).getSelected() == viewHolder.firstRadio.getId()){
viewHolder.firstRadio.setChecked(true);
}else if(list.get(position).getSelected() == viewHolder.secondRadio.getId()){
viewHolder.secondRadio.setChecked(true);
}
return convertView;
}
}
行.xml
<?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" >
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textSize="30sp" >
</TextView>
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/label"
android:orientation="horizontal">
<RadioButton
android:id="@+id/first_rad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="4dip"
android:layout_marginRight="10dip"
android:focusable="false"
android:focusableInTouchMode="false" >
</RadioButton>
<RadioButton
android:id="@+id/second_rad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="4dip"
android:layout_marginRight="10dip"
android:focusable="false"
android:focusableInTouchMode="false" >
</RadioButton>
</RadioGroup>
模型.java
public class Model {
private String name;
private int selected;
public Model(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getSelected() {
return selected;
}
public void setSelected(int selected) {
this.selected = selected;
}
}
最佳答案
如下更改if语句
中的条件,它将起作用。
if(list.get(position).getSelected() == viewHolder.firstRadio.getId())
{
viewHolder.firstRadio.setChecked(true);
viewHolder.secondRadio.setChecked(false);
}
else if(list.get(position).getSelected() == viewHolder.secondRadio.getId())
{
viewHolder.secondRadio.setChecked(true);
viewHolder.firstRadio.setChecked(false);
}
else
{
viewHolder.secondRadio.setChecked(false);
viewHolder.firstRadio.setChecked(false);
}
关于java - 未维护 RadioGroup 状态的自定义 ListView View Holder 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777385/
Android 上的动态表单可能非常困惑,我遇到过这种特殊情况,我通过 RadioGroup 和 AppCompatRadioButton 创建了一个选项列表,其中checkedId 与动态 Radi
我想实现如下图所示的Single RadioGroup 以进行血型选择。如何做到这一点? 最佳答案 我创建了自己的 RadioGridLayout,其中包含 RadioGroup 代码并扩展了 Gri
我有一个带有单选按钮的 RadioGroup。要清除选中的项目,我正在调用 radiogroup.clearCheck()。但是,RadioGroup.setOnCheckedChangeListen
我不知道为什么我的 RadioGroup 分隔线没有显示。有人请说明一下。我已经看过 Android radiogroup, divider between radiobuttons .
有没有办法将 radioGroup 设置为只读。我试过disabled: true,但这会在radioGroup上创建一个掩码,这使得它几乎不可读。关于如何将 extjs radioGroup 设置为
我有以下 HTML,我需要一个单选按钮。不确定如何在 AngularJS 中执行此操作。 Type of M (check one):
我在 RadioGroup Listener 上遇到问题,我对 Android 有点菜鸟,非常感谢您的帮助。 我有 5 个单选按钮,每个按钮都有不同的值。 下面是java代码 package com.
我上周刚刚开始学习,我对我书上的RadioGroup有一些疑问。 radioGroup.clearCheck(); radioGroup.setOnCheckedChangeListener(
我正在尝试为单选按钮(或可切换按钮)制作自定义样式,但我不知道它是否可以实现。 我的按钮的当前样式: 我想实现这样的目标 理想的风格: 一个加号是有一个动画,其中选定的颜色在按钮之间“滑动”。在 xm
我创建了一个 RadioGroup 并以编程方式向其添加 RadioButtons。问题是,运行时我可以选中所有选项,但无法取消选中它们。这是我的代码: optionsContaine
我的想法是让 ImageView - RadioButton 成对,每对包含在 LinearLayout(水平方向)和 ImageButtons 中,当选择并确认一个选项时,它们的背景颜色会改变。所以
我正在做一个应用程序,我必须在其中为初始选择的项目生成具有特定基值的复选框,然后更改它的值。那里没有什么很复杂的。 我的问题是当我重置布局时,我创建了一个新的 RadioGroup,其中包含新的 Ra
我正在尝试从单选组获取单选按钮文本,但问题是:它没有获得值。我搜索了其他链接,但对我没有帮助。 private EditText FirstName; private EditText
这是我在这个网站上的第一篇文章,我希望它做得很好。我试图在我的 radio 组中进行单一选择,但所有这些都被选中并且无法取消选中。我希望如果一个单选按钮被选中,其他的则保持未选中状态。到目前为止,这是
我正在尝试创建 2 行单选按钮,如下图所示。但是直接放在上面我的radio group就不行了线性布局。 我是安卓开发的新手。所以如果有更好的选择。欢迎他们 我的代码
我正在尝试创建一个 RadioGroup,如图所示。我希望一次只检查一个 RadioButton。 这就是我为实现这一目标所做的。
我想创建一个包含 RadioGroup 的自定义 View。在 RadioGroup 内部,我想设置 RadioButtons,以便第一个 RadioButton 位于左上角,第二个是在那之下,第一个
是否可以在自己的布局中拥有一个带有单选按钮的单选组?每个单选按钮都必须位于包含文本和图像的行中。我不会使用 ListView ,因为我只有 2 行。 最佳答案 方法如下: 在 XML 布局文件中的每个
我在我的应用程序上安装了一个带有三个单选按钮的单选按钮组,但我希望文本显示在它上面,就像复选框等一样。我可以像这样引用 strings.xml 文件吗?
我想给用户四个选择,第一个和第二个选择在一行,第三个和第四个选择在另一行。我的问题是当应用程序启动时我可以选择多个选项,但我不希望这样。这是我的 xml 布局:
我是一名优秀的程序员,十分优秀!