Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何在列表视图中选择多个radiobuttons并使用它们的位置安排在arraylist中大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Iam有25个问题,每个都有4个选项(只有4个单选按钮)在listview中的四个中选择.我准确地获得选定的位置和他们的无线电ID但是我无法在arraylist中保持他们的位置与无线电id.还有一个问题当滚动列表视图时,检查的单选按钮放错了地方.请在下面帮助我.

提前致谢!

这是我的适配器类,请查看它.

公共类Customlistadapter扩展BaseAdapter {

private Integer[] listData;
    int SELEctedPosition = -1;
    private LayoutInflater mInflater;

    public Customlistadapter(Context context,Integer[] listData) {
        super();
        this.listData = listData;
        mInflater = LayoutInflater.from(context);
        validdata = new ArrayList<String>();
        int size = values.length;
        Log.d("size","" + sizE);
        for (int i = 0; i < size; i++) {
            checked.add(false);
            validdata.add("");
            checkeddata.add("");

        }
    }

    @Override
    public int getCount() {
        return listData.length;
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

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

    public View getView(final int position,View convertView,ViewGroup parent) {
        final ViewHolder holder;
        View view = convertView;

        if (view == null) {
            view = mInflater.inflate(R.layout.items,null);
            holder = new ViewHolder();
            holder.headlineView = (TextView) view
                    .findViewById(R.id.textview1);
            holder.r1 = (RadioButton) view.findViewById(R.id.radio0);
            holder.r2 = (RadioButton) view.findViewById(R.id.radio1);
            holder.r3 = (RadioButton) view.findViewById(R.id.radio2);
            holder.r4 = (RadioButton) view.findViewById(R.id.radio3);
            holder.rp = (RadioGroup) view.findViewById(R.id.rgOpinion);
            holder.rp.setTag(position);
            view.setTag(holder);

            holder.rp
                    .setOncheckedchangelistener(new Oncheckedchangelistener() {

                        public void oncheckedChanged(RadioGroup group,int checkedId) {
                            // TODO Auto-generated method stub
                            View radioButton = group
                                    .findViewById(checkedId);
                            final String radioId = String.valueOf(group
                                    .indexOfChild(radioButton));
                            final int radio = group
                                    .indexOfChild(radioButton);
                            String radioid;

                            Log.d("radioid","" + radioId);
                            if (holder.r1.ischecked()) {
                                holder.r1
                                        .setchecked(position == SELEctedPosition);
                                holder.r1.setTag(position);
                                holder.r1.setchecked(true);
                                holder.r1
                                        .setOnClickListener(new View.onClickListener() {
                                            @Override
                                            public void onClick(View view) {
                                                SELEctedPosition = (Integer) view
                                                        .getTag();
                                                notifyDataSetChanged();
                                                Log.d("SELEctesxsxad",""
                                                        + SELEctedPosition);
                                                String s = listData[SELEctedPosition]
                                                        .toString();
                                                checked.add(
                                                        SELEctedPosition,truE);

                                                Log.d("valid","" + checked);

                                            }
                                        });
                                radioid = "A";

                            } else if (holder.r2.ischecked()) {
                                holder.r2
                                        .setchecked(position == SELEctedPosition);
                                holder.r2.setTag(position);
                                holder.r2.setchecked(true);
                                holder.r2
                                        .setOnClickListener(new View.onClickListener() {
                                            @Override
                                            public void onClick(View view) {
                                                SELEctedPosition = (Integer) view
                                                        .getTag();
                                                notifyDataSetChanged();
                                                Log.d("SELEctesxsxad",""
                                                        + SELEctedPosition);
                                                validdata.add(
                                                        SELEctedPosition,radioId);
                                                Log.d("valid",""
                                                        + validdata);

                                            }
                                        });
                                radioid = "B";

                            } else if (holder.r3.ischecked()) {
                                holder.r3
                                        .setchecked(position == SELEctedPosition);
                                holder.r3.setTag(position);

                                holder.r3.setchecked(true);
                                holder.r3
                                        .setOnClickListener(new View.onClickListener() {
                                            @Override
                                            public void onClick(View view) {
                                                SELEctedPosition = (Integer) view
                                                        .getTag();
                                                notifyDataSetChanged();
                                                Log.d("SELEctesxsxad",""
                                                        + validdata);

                                            }
                                        });
                                radioid = "C";

                            } else if (holder.r4.ischecked()) {
                                holder.r4
                                        .setchecked(position == SELEctedPosition);
                                holder.r4.setTag(position);
                                holder.r4.setchecked(true);
                                holder.r4
                                        .setOnClickListener(new View.onClickListener() {
                                            @Override
                                            public void onClick(View view) {
                                                SELEctedPosition = (Integer) view
                                                        .getTag();
                                                notifyDataSetChanged();
                                                Log.d("SELEctesxsxad",""
                                                        + validdata);

                                            }
                                        });
                                radioid = "D";

                            }
                        }
                    });

        } else {
            holder = (ViewHolder) view.getTag();
        }
        holder.rp = (RadioGroup) view.findViewById(R.id.rgOpinion);
        holder.r1 = (RadioButton) view.findViewById(R.id.radio0);
        holder.r2 = (RadioButton) view.findViewById(R.id.radio1);
        holder.r3 = (RadioButton) view.findViewById(R.id.radio2);
        holder.r4 = (RadioButton) view.findViewById(R.id.radio3);
        holder.headlineView.setText(listData[position].toString());
        holder.r1.getTag(position);
        if (holder.r1.ischecked()) {
            holder.r1.setchecked(true);
        } else if (holder.r2.ischecked()) {
            holder.r2.setchecked(true);
        } else if (holder.r3.ischecked()) {
            holder.r3.setchecked(true);
        } else if (holder.r4.ischecked()) {
            holder.r4.setchecked(true);
        }
        return view;
    }

    public class ViewHolder {
        TextView headlineView;
        RadioGroup rp;
        RadioButton r1,r2,r3,r4;
    }

解决方法

尝试这个代码它正在工作 @H_301_23@1.i已经使用一个带有字符串和整数的bean类作为字段我正在创建一个类型为bean的arraylist @H_301_23@2.在onCreate中我正在创建对象并设置requid问题并将ADD设置为list @H_301_23@//这里是适配器代码

@Override
public View getView(int position,ViewGroup parent) {
    ViewHolder mHolder;
    // if (convertView == null) {
    mHolder = new ViewHolder();
    convertView = LayoutInflater.from(mContext).inflate(R.layout.listitems,null);
    mHolder.mTextView = (TextView) convertView.findViewById(R.id.textView1);
    mHolder.mGroup = (RadioGroup) convertView.findViewById(R.id.radioGroup1);
    mHolder.mRedButton1 = (RadioButton) convertView.findViewById(R.id.radio0);
    mHolder.mRedButton2 = (RadioButton) convertView.findViewById(R.id.radio1);
    mHolder.mRedButton3 = (RadioButton) convertView.findViewById(R.id.radio2);
    // convertView.setTag(mHolder);
    // }
    // else {
    // mHolder = (ViewHolder) convertView.getTag();
    // }
    final MyQuestion mMyQuestion = myQuestions.get(position);
    mHolder.mTextView.setText(mMyQuestion.getmQuestion());

    int mQuestion_answed = mMyQuestion.getQuestion_answed();
    mHolder.mGroup.setOncheckedchangelistener(null);

    if (mQuestion_answed != 0) {
        switch (mQuestion_answed) {
        case 1:
            mHolder.mRedButton1.setchecked(true);
            break;
        case 2:
            mHolder.mRedButton2.setchecked(true);
            break;
        case 3:
            mHolder.mRedButton3.setchecked(true);
            break;
        default:
            break;
        }
    }

    // listener for radioGroup
    mHolder.mGroup.setOncheckedchangelistener(new Oncheckedchangelistener() {
        @Override
        public void oncheckedChanged(RadioGroup group,int checkedId) {
            switch (checkedId) {
            case R.id.radio0:
                mMyQuestion.setQuestion_answed(1);
                break;
            case R.id.radio1:
                mMyQuestion.setQuestion_answed(2);
                break;
            case R.id.radio2:
                mMyQuestion.setQuestion_answed(3);
                break;
            default:
                break;
            }
        }
    });
    return convertView;
}

// VIewHolder

private class ViewHolder {
    TextView mTextView;
    RadioGroup mGroup;
    RadioButton mRedButton1,mRedButton2,mRedButton3;
}

// bean类

public class MyQuestion {
private String mQuestion;
privatE int question_answed;

public MyQuestion() {
    super();
}

public String getmQuestion() {
    return mQuestion;
}

public void setmQuestion(String mQuestion) {
    this.mQuestion = mQuestion;
}

public int getQuestion_answed() {
    return question_answed;
}

public void setQuestion_answed(int question_answed) {
    this.question_answed = question_answed;
}

}

这是我正在使用的ArrayList

private ArrayList<MyQuestion> mQuestionsList = new ArrayList<MyQuestion>();

大佬总结

以上是大佬教程为你收集整理的android – 如何在列表视图中选择多个radiobuttons并使用它们的位置安排在arraylist中全部内容,希望文章能够帮你解决android – 如何在列表视图中选择多个radiobuttons并使用它们的位置安排在arraylist中所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。