我如何获得在customlistadapter中设置的testFragment中选择的答案?

时间:2016-04-06 09:30:41

标签: custom-lists oncheckedchanged

这是我的测试片段,我根据开关构建列表:

public class TestFragment extends Fragment {

    public String Workshop;
    public int NumberOfQuestions;
    public Button SaveButton;
    public TextView GradeView;
    public String Grades;


    private OnFragmentInteractionListener mListener;

    public TestFragment() {}


        @Override
        public View onCreateView (LayoutInflater inflater, ViewGroup container,
                Bundle bundle){
            View rootView = inflater.inflate(R.layout.questionscomplete,
                    container, false);



            Workshop = getArguments().getString("Workshoptitle");
            GradeView = ((TextView) rootView.findViewById(R.id.GradeView));
            // Inflate the layout for this fragment

            if (!Workshop.equals("Doodlz Drawing")) {
                rootView = inflater.inflate(R.layout.fragment_test,
                        container, false);

                final ListView lv1 = (ListView) rootView.findViewById(R.id.listview);
                ArrayList image_details = getListData();
                lv1.setAdapter(new CustomListAdapter(getActivity(), image_details));
                SaveButton = ((Button) rootView.findViewById(R.id.Save));
                SaveButton.setOnClickListener(Grading);
            }

            return rootView;

        }

    private ArrayList getListData() {

        ArrayList<QuestionItem> results = new ArrayList<QuestionItem>();
        switch (Workshop) {

            case "Android Studio":
                Workshop = "Android Studio";
                QuestionItem[] Item1 = new QuestionItem[3];
                QItem WS1 = new QItem();
                NumberOfQuestions = Item1.length;
                String[] WS1Q = WS1.getQuestions(Workshop, NumberOfQuestions);
                String[] WS1QA = WS1.getAnswers(Workshop);

                for (int i = 0; i < NumberOfQuestions; i++) {
                    Item1[i] = new QuestionItem();

                    Item1[i].setQuestion(WS1Q[i]);
                    Item1[i].setAnswer1(WS1QA[i * 10 + 0]);
                    Item1[i].setAnswer2(WS1QA[i * 10 + 1]);
                    Item1[i].setAnswer3(WS1QA[i * 10 + 2]);
                    Item1[i].setAnswer4(WS1QA[i * 10 + 3]);
//                    Toast.makeText(getActivity(), Item1[i].GetAnswer(),
//                            Toast.LENGTH_LONG).show();
                    results.add(Item1[i]);
                }

                break;

            case "Java Basics":
                Workshop = "Java Basics";
                QuestionItem[] Item2 = new QuestionItem[5];
                QItem WS2 = new QItem();
                NumberOfQuestions = Item2.length;
                String[] WS2Q = WS2.getQuestions(Workshop, NumberOfQuestions);
                String[] WS2QA = WS2.getAnswers(Workshop);


                for (int i = 0; i < NumberOfQuestions; i++) {
                    Item2[i] = new QuestionItem();
                    Item2[i].setQuestion(WS2Q[i]);
                    Item2[i].setAnswer1(WS2QA[i * 10 + 0]);
                    Item2[i].setAnswer2(WS2QA[i * 10 + 1]);
                    Item2[i].setAnswer3(WS2QA[i * 10 + 2]);
                    Item2[i].setAnswer4(WS2QA[i * 10 + 3]);
                    results.add(Item2[i]);
//                    Toast.makeText(getActivity(), Item2[i].GetAnswer(),
//                            Toast.LENGTH_LONG).show();
                }

                break;

我的listadapter:

  
public class CustomListAdapter extends BaseAdapter {

    private LayoutInflater layoutInflater;
    public String Answer;
    public String[] Answers;
    private ArrayList<QuestionItem> listData;


    public CustomListAdapter(Context aContext, ArrayList<QuestionItem> listData) {
        this.listData = listData;
        layoutInflater = LayoutInflater.from(aContext);
    }

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


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

    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        View v = convertView;
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.questions, null);
            holder = new ViewHolder(

            );
            holder.QuestionView = (TextView) convertView.findViewById(R.id.q);
            holder.Answer1View = (TextView) convertView.findViewById(R.id.qa1);
            holder.Answer2View = (TextView) convertView.findViewById(R.id.qa2);
            holder.Answer3View = (TextView) convertView.findViewById(R.id.qa3);
            holder.Answer4View = (TextView) convertView.findViewById(R.id.qa4);
//
            holder.Answer1Button = (RadioButton) convertView.findViewById(R.id.qa1);
            holder.Answer2Button = (RadioButton) convertView.findViewById(R.id.qa2);
            holder.Answer3Button = (RadioButton) convertView.findViewById(R.id.qa3);
            holder.Answer4Button = (RadioButton) convertView.findViewById(R.id.qa4);

            holder.ButtonGroupView = (RadioGroup) convertView.findViewById(R.id.group);

            convertView.setTag(holder);
            holder.ButtonGroupView.getCheckedRadioButtonId();

            holder.ButtonGroupView
                    .setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                        public void onCheckedChanged(RadioGroup group,
                                                     int checkedId) {
                            Integer pos = (Integer) group.getTag(); // To identify the Model object i get from the RadioGroup with getTag()
                            //  an integer representing the actual position
                            QuestionItem element = listData.get(pos);
                            switch (checkedId) { //set the Model to hold the answer the user picked
                                case R.id.qa1:
                                    element.setAnswer("1");
"Log.d(listData.get(pos).toString(), element.GetAnswer());
                                    break;
                                case R.id.qa2:
                                    element.setAnswer("2");
"Log.d(listData.get(pos).toString(), element.GetAnswer());
                                    break;
                                case R.id.qa3:
                                    element.setAnswer("3");
"Log.d(listData.get(pos).toString(), element.GetAnswer());
                                    break;
                                case R.id.qa4:
                                    element.setAnswer("4");
"Log.d(listData.get(pos).toString(), element.GetAnswer());
                                    break;
                                default:
                                    element.setAnswer(null); // Something was wrong set to the default
                            }

                        }
                    });
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        QuestionItem element = (QuestionItem) getItem(position);

        holder.QuestionView.setText(listData.get(position).getQuestion());
        holder.Answer1View.setText(listData.get(position).Getanswer1());
        holder.Answer2View.setText(listData.get(position).Getanswer2());
        holder.Answer3View.setText(listData.get(position).Getanswer3());
        holder.Answer4View.setText(listData.get(position).Getanswer4());

        holder.ButtonGroupView.setTag(new Integer(position)); // I passed the current position as a tag

        

        return convertView;
    }

//    


    class ViewHolder {
        TextView t = null;
        TextView QuestionView;
        TextView Answer1View;
        TextView Answer2View;
        TextView Answer3View;
        TextView Answer4View;
        RadioButton Answer1Button, Answer2Button, Answer3Button, Answer4Button;
        RadioGroup ButtonGroupView;


    }}

我的问题项目:

   public class QuestionItem {
    private String Question;
    private String Answer1;
    private String Answer2;
    private String Answer3;
    private String Answer4;
    private String Answer;



    public String getQuestion() {
        return Question;
    }

    public void setQuestion(String Question) {
        this.Question = Question;
    }


    public String Getanswer1() {
        return Answer1;
    }

    public void setAnswer1(String Answer1) {
        this.Answer1 = Answer1;
    }


    public String Getanswer2() {
        return Answer2;
    }

    public void setAnswer2(String Answer2) {
        this.Answer2 = Answer2;
    }


    public String Getanswer3() {
        return Answer3;
    }

    public void setAnswer3(String Answer3) {
        this.Answer3 = Answer3;
    }

    public String Getanswer4() {
        return Answer4;
    }

    public void setAnswer4(String Answer4) {
        this.Answer4 = Answer4;
    }

    public String GetAnswer() {
        return Answer;
    }
    public void setAnswer(String Answer) {
        this.Answer = Answer;
    }

}

我想保存所有答案,并将它们与正确的答案进行比较,并将分数保存为另一个片段中的变量。

更新:添加“Log.d(listData.get(pos).toString(),element.GetAnswer());”我可以看到它存储了选择答案,所以我如何在testfragment中请求它们并检查它们

我尝试了几件事,但找不到解决方案。请帮忙:))

0 个答案:

没有答案