gpt4 book ai didi

android - 带有 radio 组滚动问题的自定义 ListView

转载 作者:行者123 更新时间:2023-11-30 01:39:55 25 4
gpt4 key购买 nike

我正在尝试实现一个包含单选按钮的自定义 ListView ,但是当我滚动 ListView 时,选定的单选按钮会自动取消选择。我解决了这个问题,但我无法找出确切的问题。我刚来这地方。我的适配器类代码是

 public class CustomAdapterListView extends ArrayAdapter<FDetailsPOJO> {

private final List<FDetailsPOJO> list;
private final Activity context;
int resource;
ViewHolder viewHolder = null;
private LayoutInflater mLayoutInflater;

public CustomAdapterListView(Activity context, int resource, List<FDetailsPOJO> objects) {
super(context, resource, objects);
this.context = context;
this.resource = resource;
this.list = objects;
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
try {

convertView = mLayoutInflater.inflate(R.layout.custom_checkbox_row, parent, false);

viewHolder = new ViewHolder();

viewHolder.tvName = (TextView) convertView.findViewById(R.id.custom_checkbox_row_tv);
viewHolder.radioGroup = (RadioGroup) convertView.findViewById(R.id.fragmenttab2_options);

viewHolder.rbYes = (RadioButton) convertView.findViewById(R.id.fragmenttab2_options_yes);
viewHolder.rbNo = (RadioButton) convertView.findViewById(R.id.fragmenttab2_options_no);

viewHolder.radioGroup.setTag(position);
convertView.setTag(R.id.custom_checkbox_row_tv, viewHolder.tvName);
convertView.setTag(R.id.fragmenttab2_options, viewHolder.radioGroup);
convertView.setTag(viewHolder);
} catch (Exception e) {
e.printStackTrace();
}
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int isChecked = (int) group.getTag();
try {

switch (checkedId) {
case R.id.fragmenttab2_options_yes:
try {
list.get(isChecked).setCheckedYes(true);
list.get(isChecked).setCheckedNo(false);
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.fragmenttab2_options_no:
try {
list.get(isChecked).setCheckedNo(true);
list.get(isChecked).setCheckedYes(false);

} catch (Exception e) {
e.printStackTrace();
}

break;
}
} catch (Exception e) {
e.printStackTrace();
}

}
});
try {
viewHolder.radioGroup.setTag(position);
viewHolder.tvName.setText(list.get(position).getFitnessItem());
viewHolder.rbYes.setChecked(list.get(position).isCheckedYes());
viewHolder.rbNo.setChecked(list.get(position).isCheckedNo());
} catch (Exception e) {
e.printStackTrace();
}
return convertView;
}

private class ViewHolder {
TextView tvName;
RadioGroup radioGroup;
RadioButton rbYes;
RadioButton rbNo;
}
}

在搜索解决方案时,我找到了一个解决问题的代码 fragment ,但这不是同一链接中提到的合适方法

 @Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return list.size();
}

@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
return position;
}

最佳答案

您必须在单独的变量中跟踪选定的单选选项,并根据列表的 getView 方法中的值手动将其标记为选中。

关于android - 带有 radio 组滚动问题的自定义 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34629544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com