1

This is my testfragment where i build the list based on a switch:

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;

My 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;


    }}

My question Item:

   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;
    }

}

I want to save all the answers and compare them to the right answers and save the score to be used as a variable in another fragment.

UPDATE: added "Log.d(listData.get(pos).toString(), element.GetAnswer());" And i can see it is storing the choses answers so how do i request them in the testfragment and check them

Ive tried several things but cannot find the solution. pls help:)?

Igo
  • 11
  • 2
  • 1
    Please [edit] your post to include any additional information you have to your question. Avoid adding this in the comments, as they are harder to read and can be deleted easier. The edit button for your post is just below the post's tags. – Tobi Nary Apr 06 '16 at 09:40
  • Please edit you example. That's a lot of irrelevant code. Your example should be as minimal as possible – Adrian Krupa Apr 06 '16 at 09:42

0 Answers0