Android 单选按钮更改分区Listview滚动条上的状态
我正在应用程序中使用Android 单选按钮更改分区Listview滚动条上的状态,android,listview,adapter,Android,Listview,Adapter,我正在应用程序中使用分段列表视图 在ListView的行中,我有TextView和RadioGroup. 因此,当我点击单选按钮时,它通常会被点击并正常工作。 但当我点击并滚动视图时,所选视图也会显示 消失而不受控制 这就是我正在使用的XML <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" a
分段列表视图
在ListView
的行中,我有TextView
和RadioGroup.
因此,当我点击单选按钮时,它通常会被点击并正常工作。
但当我点击并滚动视图时,所选视图也会显示
消失而不受控制
这就是我正在使用的XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bg" >
<TextView
android:id="@+id/tvname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:maxLines="1"
android:padding="10dp"
android:textColor="#000000"
android:textSize="18dp"
android:textStyle="bold" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/check_present"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:onClick="onPresentClick" />
<RadioButton
android:id="@+id/check_absent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/check_present"
android:onClick="onPresentClick" />
</RadioGroup>
</RelativeLayout>
您应该维护/保留“选中”单选按钮的状态,以便在上下滚动时保持选中状态,因为在上下滚动列表视图时,列表适配器会重新创建每个列表项/视图 您应该通过在单选按钮上设置listener来保留选中单选按钮的位置/索引 您可以使用hashMap将列表项作为s键保存,并将“已检查”状态作为值保存。 当用户选中该框时,将键值添加到地图,当用户取消选中该框时,从地图中删除键值 在渲染列表视图中使用此贴图。代码如下:
private Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Boolean present = map.get(position);
if(present != null && present.booleanValue()){
// set present checkbox selected
} else {
// set absent checkbox selected
}
holderName.radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.check_absent:
map.put(position, false)
break;
case R.id.check_present:
map.put(position, true)
break;
}
}
});
}
private Map=new HashMap();
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
布尔值present=map.get(位置);
if(present!=null&&present.booleanValue(){
//选中“设置当前”复选框
}否则{
//选中“设置缺席”复选框
}
holderName.radioGroup.setOnCheckedChangeListener(新的OnCheckedChangeListener(){
检查更改后的公共无效(RadioGroup组,int checkedId){
开关(检查EDID){
案例R.id.检查不存在:
地图放置(位置,错误)
打破
案例R.id.检查是否存在:
地图放置(位置,真)
打破
}
}
});
}
如果你不能理解我的观点,请告诉我,这样我可以为你发布代码Yes@Rakesh Bhalani我理解你的观点。。让我再试一次,如果我找不到解决办法,我会请求你的帮助。。感谢您提供解决方案的提示…我使用了您的代码,但无法解决该问题。。这对我不起作用。请帮帮我。。从昨天开始,我正在尽我最大的努力解决这个问题……@RakeshBhalani。。我已经更新了代码。请看一看。。否则我可以做一件事,我可以把代码寄给你,这样你就可以运行它,知道我哪里做错了。感谢您的回复和帮助您在listener的切换框中为当前和缺席输入“true”,请在地图中为当前和缺席输入“false”。
private Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Boolean present = map.get(position);
if(present != null && present.booleanValue()){
// set present checkbox selected
} else {
// set absent checkbox selected
}
holderName.radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.check_absent:
map.put(position, false)
break;
case R.id.check_present:
map.put(position, true)
break;
}
}
});
}