gpt4 book ai didi

android - 如何在 LinearList View 中存储组单选按钮的状态

转载 作者:行者123 更新时间:2023-11-29 20:50:00 25 4
gpt4 key购买 nike

我有一个线性布局的调查问卷和一个单选按钮组。现在,当我向下滚动线性列表并再次向上滚动时,单选按钮的选定状态变为默认状态(即未选择任何内容)。如何存储单选按钮的状态。请注意,我已尝试使用共享首选项方法!不起作用!这是我的代码:

 class MyCustomAdapter extends BaseAdapter {
Vector<String> question;
Vector<String> answerA;
Vector<String> answerB;
Vector<String> answerC;
Vector<String> answerD;

MyCustomAdapter() {
question = null;
answerA = null;
answerB = null;
answerC = null;
answerD = null;

}

MyCustomAdapter(Vector<String> qs, Vector<String> ansA,Vector<String> ansB,Vector<String> ansC,Vector<String> ansD) {
question = qs;
answerA = ansA;
answerB = ansB;
answerC = ansC;
answerD = ansD;
// data_image = image;
}

public int getCount() {
return question.size();
}

public String getItem(int position) {
return null;
}

public long getItemId(int position) {
return position;
}

public View getView(final int position, View convertView,
ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row=null;
row = inflater.inflate(R.layout.accountlist, parent, false);
TextView tv = (TextView) row.findViewById(R.id.questionText);
tv.setText(question.get(position).toString());



System.out.println("--------------------------------------");

rg=(RadioGroup)row.findViewById(R.id.radio);
RadioButton rba=(RadioButton)row.findViewById(R.id.radioA);
RadioButton rbb=(RadioButton)row.findViewById(R.id.radioB);
RadioButton rbc=(RadioButton)row.findViewById(R.id.radioC);
RadioButton rbd=(RadioButton)row.findViewById(R.id.radioD);

rba.setText(answerA.elementAt(position));
rbb.setText(answerB.elementAt(position));
rbc.setText(answerC.elementAt(position));
rbd.setText(answerD.elementAt(position));



if(position==1){
rba.setChecked(true);
}




rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
if(null!=rb && checkedId > -1){

// Toast.makeText(ContestActivity.this, rb.getText()+""+position, Toast.LENGTH_SHORT).show();
System.out.println("*****************************************");
if(position==0){


int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans1=questionID.elementAt(position)+":"+id;
}if(position==1){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans2=questionID.elementAt(position)+":"+id;
}if(position==2){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans3=questionID.elementAt(position)+":"+id;
}if(position==3){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans4=questionID.elementAt(position)+":"+id;
}if(position==4){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans5=questionID.elementAt(position)+":"+id;
}if(position==5){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans6=questionID.elementAt(position)+":"+id;
}if(position==6){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans7=questionID.elementAt(position)+":"+id;
}if(position==7){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans8=questionID.elementAt(position)+":"+id;
}if(position==8){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans9=questionID.elementAt(position)+":"+id;
}if(position==9){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans10=questionID.elementAt(position)+":"+id;
}if(position==10){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans11=questionID.elementAt(position)+":"+id;
}if(position==11){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans12=questionID.elementAt(position)+":"+id;
}if(position==12){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans13=questionID.elementAt(position)+":"+id;
}if(position==13){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans14=questionID.elementAt(position)+":"+id;
}if(position==14){
int index=answerValue.indexOf(rb.getText());
String id=answerID.elementAt(index);
ans15=questionID.elementAt(position)+":"+id;
}
}
}
});


return (row);
}

最佳答案

您需要创建一个数组并存储单选按钮状态。请参见下面的代码

private boolean[] myChecks = new boolean[question.size()];
private class MyCustomAdapter extends BaseAdapter {
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
...
rg.setChecked(myChecks[position]);
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {

myChecks[position] = arg1;


/// put your code/////
}
});
}

关于android - 如何在 LinearList View 中存储组单选按钮的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29384542/

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