自定义列表视图适配器中的无线电组的滚动值未选中

默里·帕尔

这是我的自定义列表视图类,我正在草草记下我们的列表视图,这是未经检查的privies选择单选按钮

private String[] question_name;
private String[] op11, op22, op33, op44;
private Activity context;
RadioGroup rg=null;
private HashMap<Integer,String>selectitem=new HashMap<>();

public QustionAdapter(Activity context, String[] queation, String[] op1, String[] op2,
                      String[] op3, String[] op4) {
    super(context, R.layout.qustion_custom_list, queation);
    this.context = context;
    this.question_name = queation;
    this.op11 = op1;
    this.op22 = op2;
    this.op33 = op3;
    this.op44 = op4;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
    LayoutInflater inflater = context.getLayoutInflater();

    View listViewItem = inflater.inflate(R.layout.qustion_custom_list, null, false);

    TextView questionname=(TextView)listViewItem.findViewById(R.id.qustion_tb);
    RadioButton op1=(RadioButton)listViewItem.findViewById(R.id.op1);
    RadioButton op2=(RadioButton)listViewItem.findViewById(R.id.op2);
    RadioButton op3=(RadioButton)listViewItem.findViewById(R.id.op3);
    RadioButton op4=(RadioButton)listViewItem.findViewById(R.id.op4);
   rg=(RadioGroup) listViewItem.findViewById(R.id.radio_group);


  //  Toast.makeText(context,"Done :"+rg.getCheckedRadioButtonId(),Toast.LENGTH_LONG).show();
    rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            Model model=new Model();

            RadioButton rb=(RadioButton) group.findViewById(checkedId);
           // Toast.makeText(context,"Done :"+rb.getText(),Toast.LENGTH_LONG).show();
            String sel=rb.getText().toString();
            selectitem.put(position,sel);
            model.setSelectResult(selectitem);
        }
    });


    questionname.setText(question_name[position]);
    op1.setText(op11[position]);
    op2.setText(op22[position]);
    op3.setText(op33[position]);
    op4.setText(op44[position]);

    return listViewItem;
}'

当我选择第一个收音机组按钮时,它会选择,但是当我回到收音机组中时,滚动它时,它的选中状态不会被选中。

XäiñUl Abideen

开始了

    public class CurrentAffairs extends AppCompatActivity {
    public static int correct, wrong, marks;
    DbH db;
    ArrayList<Question> mcqs;
    Cursor cur;
    ListView lv;
    CustomAdapter c;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.current_affairs);

        //casting
        lv = (ListView) findViewById(R.id.lv);
        mcqs = new ArrayList<>();


    enter code here
        try {
            db = new DbH(this);
        } catch (IOException e2) {

            e2.printStackTrace();
        }

        try {
            db.createdatabase();
        } catch (IOException e) {

            e.printStackTrace();
        }

        db.opendatabase();
        cur = db.data();

        try {

            while (cur.moveToNext()) {
                String mcqss = cur.getString(1);
                String opta = cur.getString(2);
                String optb = cur.getString(3);
                String optc = cur.getString(4);
                String optd = cur.getString(5);
                String answ = cur.getString(6);

                //put data in a listview
                Question question = new Question();
                question.question = mcqss;
                question.option1 = opta;
                question.option2 = optb;
                question.option3 = optc;
                question.option4 = optd;
                question.correctanxer = answ;
                mcqs.add(question);



               c = new CustomAdapter(CurrentAffairs.this, R.layout.row, R.id.mcqsText, mcqs);
                lv.setAdapter(c);


            }
        } finally {
            cur.close();
        }
        Button btnshow = (Button) findViewById(R.id.btnshowresult);
        btnshow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                StringBuffer sb = new StringBuffer();
                sb.append("Correct Answer = " + " " + correct);
                sb.append("    " + "Wrong Answer = " + " " + wrong);
                sb.append("    " + "Final Score = " + " " + correct * 5);

                Toast.makeText(CurrentAffairs.this, sb, Toast.LENGTH_SHORT).show();
            }
        });
    }



    class CustomAdapter extends ArrayAdapter<Question> {

        public CustomAdapter(Context context, int resource, int textViewResourceId, ArrayList<Question> objects) {
            super(context, resource, textViewResourceId, objects);


        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View v = inflater.inflate(R.layout.row, parent, false);
            TextView mcqsText = (TextView) v.findViewById(R.id.mcqsText);
            TextView ans2 = (TextView) v.findViewById(R.id.answer2);
            TextView anss = (TextView) v.findViewById(R.id.answer);
            RadioGroup rg = (RadioGroup) v.findViewById(R.id.radioGroup);

            RadioButton opt1 = (RadioButton) v.findViewById(R.id.optA);
            RadioButton opt2 = (RadioButton) v.findViewById(R.id.optB);
            RadioButton opt3 = (RadioButton) v.findViewById(R.id.optC);
            RadioButton opt4 = (RadioButton) v.findViewById(R.id.optD);

            Question question = mcqs.get(position);

            mcqsText.setText(question.question);
            opt1.setText(question.option1);
            opt2.setText(question.option2);
            opt3.setText(question.option3);
            opt4.setText(question.option4);
            anss.setText(question.selectedanxer);
            ans2.setText("Correct answer is = " + question.correctanxer);

            String test=opt1.getText().toString();
            String test2=question.selectedanxer+"";

            if (test.equals(""+test2)){
                opt1.setChecked(true);
            }
            if (test2.equals(opt2.getText()+"")){
                opt2.setChecked(true);
            }
            if (test2.equals(opt3.getText()+"")){
                opt3.setChecked(true);
            }
            if (test2.equals(opt4.getText()+"")){
                opt4.setChecked(true);
            }




            rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {


                    Question question1=mcqs.get(position);
                    RadioButton radioButton= (RadioButton) group.findViewById(checkedId);
                    mcqs.get(position).selectedanxer=radioButton.getText().toString();
                    notifyDataSetChanged();



                }
            });

            return v;
        }
    }

    public class Question {
        String question;
        String option1;
        String option2;
        String option3;
        String option4;

        String selectedanxer;
        String correctanxer;

    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在自定义列表视图的自定义适配器类中传递多个数组值?

滚动列表视图和自定义适配器的问题

Android Java:用于滚动和过滤问题的列表视图的自定义适配器

列表视图的自定义适配器

自定义适配器不显示列表视图

自定义视图的适配器中的NullPointerException

在Windows 10中通过cmd / powershell打开/关闭蓝牙无线电/适配器

在自定义可扩展列表适配器中无法充实视图

在自定义列表视图适配器(kotlin)中设置默认突出显示的项目

无法解析适配器中自定义列表视图的布局

android自定义列表视图适配器中的ArrayList索引超出范围异常

Fragment 中的自定义列表适配器

自定义列表适配器中的 getApplicationContext()

如何使用Hashmap为自定义列表视图创建自定义适配器

在片段中每个列表视图有多个文本视图的情况下,如何设置自定义适配器

使用自定义适配器视图时,如何使列表视图可点击?

使用自定义适配器和视图持有器的Android列表视图

自定义文本视图适配器不适用于列表视图

在自定义列表视图适配器中使用多个视图

列表视图中的页脚按钮,如何从自定义列表适配器获取价值

将列表视图的数据从Asynctask传递到自定义列表适配器类

滚动时的ListView自定义适配器错误

如何在android studio中创建自定义数组适配器以禁用对列表视图项的单击

Android Recycler视图自定义适配器未执行

自定义适配器视图(带有图片)

如何使用自定义适配器单击列表视图中的项目

使用带有文本和图像的自定义适配器在列表视图中搜索

自定义列表视图和适配器覆盖getView,更改文本颜色

如何创建自定义适配器以将 cardview 用于片段内的列表视图