Android 是否在特定列表项下显示内部项?

Android 是否在特定列表项下显示内部项?,android,listview,android-linearlayout,Android,Listview,Android Linearlayout,有一个ListView,我在其中使用了动态线性布局来添加内部元素。我希望在特定列表中显示所有特定术语的内部数据(即仅显示特定术语名称和术语名称中的所有信息)。但是,我得到的是另一个列表项的内部项,即不是我所期望的 JSON [ { "CLASSNO": "1", "CLASS_ID": 2021, "CourseID": 4032, "Marks": 45, "Sno": 35, "StdID": 95, "TermID": 6014,

有一个ListView,我在其中使用了动态线性布局来添加内部元素。我希望在特定列表中显示所有特定术语的内部数据(即仅显示特定术语名称和术语名称中的所有信息)。但是,我得到的是另一个列表项的内部项,即不是我所期望的

JSON

[
  {
    "CLASSNO": "1",
    "CLASS_ID": 2021,
    "CourseID": 4032,
    "Marks": 45,
    "Sno": 35,
    "StdID": 95,
    "TermID": 6014,
    "CourseName": "History",
    "Terminal_FM": 50,
    "Terminal_PM": 20,
    "UT_FM": 100,
    "UT_PM": 40,
    "examDescription": "First Term",
    "type": "Terminal",
    "NAME": "Calvin Patterson"
  },
  {
    "CLASSNO": "1",
    "CLASS_ID": 2021,
    "CourseID": 4033,
    "Marks": 35,
    "Sno": 36,
    "StdID": 95,
    "TermID": 6014,
    "CourseName": "Science",
    "Terminal_FM": 50,
    "Terminal_PM": 20,
    "UT_FM": 100,
    "UT_PM": 40,
    "examDescription": "First Term",
    "type": "Terminal",
    "NAME": "Calvin Patterson"
  },
  {
    "CLASSNO": "1",
    "CLASS_ID": 2021,
    "CourseID": 4032,
    "Marks": 45,
    "Sno": 37,
    "StdID": 95,
    "TermID": 6015,
    "CourseName": "History",
    "Terminal_FM": 50,
    "Terminal_PM": 20,
    "UT_FM": 100,
    "UT_PM": 40,
    "examDescription": "Second Term",
    "type": "Terminal",
    "NAME": "Calvin Patterson"
  },
  {
    "CLASSNO": "1",
    "CLASS_ID": 2021,
    "CourseID": 4033,
    "Marks": 30,
    "Sno": 38,
    "StdID": 95,
    "TermID": 6015,
    "CourseName": "Science",
    "Terminal_FM": 50,
    "Terminal_PM": 20,
    "UT_FM": 100,
    "UT_PM": 40,
    "examDescription": "Second Term",
    "type": "Terminal",
    "NAME": "Calvin Patterson"
  }
]
StudentProgressReportPojo

public class StudentProgressReportPojo {


    String TermDenoter;


    public StudentProgressReportPojo(String termDenoter) {
        TermDenoter = termDenoter;
    }

    public ArrayList<String> Courses = new ArrayList<String>();

    public ArrayList<String> getCourses() {
        return Courses;
    }

    public void setCourses(ArrayList<String> courses) {
        Courses = courses;
    }

    public String getTermDenoter() {
        return TermDenoter;
    }

    public void setTermDenoter(String termDenoter) {
        TermDenoter = termDenoter;
    }

    public void addCourses(String courses) {
        Courses.add(courses);
    }
}
StudentProgressReportPojo公共课堂{
字符串术语表示器;
public StudentProgressReportPojo(字符串术语表示器){
术语表示器=术语表示器;
}
公共ArrayList课程=新建ArrayList();
公共阵列列表getCourses(){
返回课程;
}
公共课程(ArrayList课程){
课程=课程;
}
公共字符串gettermIndicater(){
返回项表示器;
}
公共void setterMinerater(字符串terminerater){
术语表示器=术语表示器;
}
公共课程(弦乐课程){
课程。添加(课程);
}
}
StudentProgressReportAdapter

 public class StudentProgressReportAdapter extends BaseAdapter {
    LinearLayout coursesViewDynamic;

    Context mContext;
    ArrayList<StudentProgressReportPojo> student_list_courses;


    String TAG = "HomeTab_adapter";

    public StudentProgressReportAdapter(Context mContext, ArrayList<StudentProgressReportPojo> student_list_courses) {
        super();
        this.mContext = mContext;
        this.student_list_courses = student_list_courses;
    }

    @Override
    public int getCount() {

        System.out.println(student_list_courses.size());
        return student_list_courses.size();
    }

    @Override
    public Object getItem(int arg0) {
        return student_list_courses.get(arg0);
    }

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

    @Override
    public View getView(final int postion, View convertView, ViewGroup parent) {
        final StudentProgressReportAdapter.Holder viewHolder;


        if (convertView == null) {
            // inflate the layout
            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.activity_progress_report, parent, false);


            // well set up the ViewHolder
            viewHolder = new StudentProgressReportAdapter.Holder();

            viewHolder.student_progress_report_termdenoter = (TextView) convertView.findViewById(R.id.progress_term_denoter);


            //added code
            viewHolder.coursesLayout = (LinearLayout) convertView.findViewById(R.id.courses_layout);


        } else {
            // we've just avoided calling findViewById() on resource everytime
            // just use the viewHolder
            viewHolder = (StudentProgressReportAdapter.Holder) convertView.getTag();
        }


        // Log.d(TAG, "@@ postion:" + postion + " getFeeDescription" + student_list.get(postion).getFeeDescription());
        // Log.d(TAG, "@@ postion:" + postion + " getAmount" + student_list.get(postion).getAmount());


        viewHolder.student_progress_report_termdenoter.setText(student_list_courses.get(postion).getTermDenoter());


        // viewHolder.receiptLinearLayout.removeAllViews();
        //added code

        //  Fee fee=new Fee();
        //   JSONArray x=fee.jArray1;


        viewHolder.coursesLayout.removeAllViews();
        for (int i = 0; i < student_list_courses.get(postion).getCourses().size(); i++) {

            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            //   reciptViewDynamic = (LinearLayout) inflater.inflate(R.layout.layout_bil_info, null);


            coursesViewDynamic = (LinearLayout) inflater.inflate(R.layout.student_progress_report_courses_listitem, parent, false);


            TextView textView = (TextView) coursesViewDynamic.findViewById(R.id.student_progressreport_subject_coursename);
            textView.setText(Integer.parseInt(student_list_courses.get(postion).getCourses().get(i)));
            // viewHolder.student_progress_report_courses = (TextView) coursesViewDynamic.findViewById(R.id.student_progressreport_subject_coursename);


            // viewHolder.student_progress_report_courses.setText(student_list_courses.get(postion).getCourses().get(i));


            // Log.d(TAG, "@@ wrong information:" + student_list.get(postion).getFeeDescription());
            viewHolder.coursesLayout.addView(coursesViewDynamic);


        }

        // (reciptViewDynamic).removeView(convertView);
        convertView.setTag(viewHolder);
        return convertView;
    }

    class Holder {
        TextView student_progress_report_courses;
        TextView student_progress_report_termdenoter;
        LinearLayout coursesLayout;
    }
}
公共类StudentProgressReportAdapter扩展了BaseAdapter{
线性布局课程视图动态;
语境;
ArrayList学生名单课程;
String TAG=“HomeTab\u适配器”;
public StudentProgressReportAdapter(上下文mContext,数组列表学生列表课程){
超级();
this.mContext=mContext;
this.student\u list\u courses=student\u list\u courses;
}
@凌驾
public int getCount(){
System.out.println(student\u list\u courses.size());
返回学生列表课程。大小();
}
@凌驾
公共对象getItem(int arg0){
返回学生列表课程。获取(arg0);
}
@凌驾
公共长getItemId(int arg0){
返回arg0;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终学生进度报告适配器。持有者视图持有者;
if(convertView==null){
//使布局膨胀
LayoutInflater充气器=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.activity\u progress\u report,父级,false);
//很好地设置了取景器
viewHolder=new StudentProgressReportAdapter.Holder();
viewHolder.student\u progress\u report\u term indicater=(TextView)convertView.findViewById(R.id.progress\u term\u indicater);
//添加代码
viewHolder.coursesLayout=(LinearLayout)convertView.findViewById(R.id.courses\u布局);
}否则{
//我们只是避免了每次在资源上调用findViewById()
//只需使用viewHolder
viewHolder=(StudentProgressReportAdapter.Holder)convertView.getTag();
}
//Log.d(标记“”@@position:“+position+“GetFeedDescription”+学生列表.get(position.GetFeedDescription());
//Log.d(标记“”@@position:“+position+”getAmount“+student_list.get(position.getAmount());
viewHolder.student\u progress\u report\u termginder.setText(student\u list\u courses.get(position.gettermginder());
//viewHolder.receiptLinearLayout.removeAllViews();
//添加代码
//费用=新费用();
//JSONArray x=fee.jArray1;
viewHolder.coursesLayout.removeAllViews();
对于(inti=0;i
ProgressFragment

public class ProgressFragment extends Fragment {

    ListView listView;
    String master_id;
    String Navigation_URL = "http://192.168.100.5:84/api/academics/getSingleStudentsMarks";
    ArrayList arrayList = new ArrayList();


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.student_progressreport_listview, container, false);
        setHasOptionsMenu(true);


        SessionManagement sessionManagement = new SessionManagement(getContext());
        master_id = sessionManagement.getMasterId();

        listView = (ListView) view.findViewById(R.id.list_student_progress_report);


        getUserProgressData();

        return view;
    }


    public void getUserProgressData() {


        String URL = Navigation_URL + "?StdID=" + master_id;
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {


                            ArrayList<StudentProgressReportPojo> student_list_courses = new ArrayList<>();


                            JSONArray jArray = new JSONArray(response);

                            //  studentFeeInformation = new StudentFeeInformation(response);
                            for (int i = 0; i < jArray.length(); i++) {
                                JSONObject jsonObject = jArray.getJSONObject(i);
                                System.out.println(i);
                                String course = jsonObject.getString("CourseName");
                                String examDescription = jsonObject.getString("examDescription");
                                // progressReportPojo.setCourses(course);
                                // progressReportPojo.getCourses();
                                StudentProgressReportPojo progressReportPojo = new StudentProgressReportPojo(examDescription);
                                arrayList.add(examDescription);

                                //   arrayList.add(course);
                                System.out.println("course" + arrayList);
                                progressReportPojo.addCourses(course);

                                // progressReportPojo.getCourses(course);
                                student_list_courses.add(progressReportPojo);


                            }

                            System.out.println("student_list size:" + student_list_courses.size());
                            StudentProgressReportAdapter studentProgressReportAdapter = new StudentProgressReportAdapter(getActivity(), student_list_courses);
                            listView.setAdapter(studentProgressReportAdapter);


                        } catch (JSONException e) {

                            System.out.println("This is not good");
                            e.printStackTrace();

                        }

                    }

                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // Toast.makeText(view.Fee.this, error.toString(), Toast.LENGTH_LONG).show();

            }
        }) {

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<String, String>();
                return headers;
            }

        };

        RequestQueue requestQueue = Volley.newRequestQueue(getContext());
        requestQueue.add(stringRequest);


    }


    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.dashboard, menu);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle item selection
        switch (item.getItemId()) {
            case R.id.action_settings:
                // do s.th.
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }


}
公共类ProgressFragment扩展了片段{
列表视图列表视图;
字符串主控id;
字符串导航\u URL=”http://192.168.100.5:84/api/academics/getSingleStudentsMarks";
ArrayList ArrayList=新的ArrayList();
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
视图=充气机。充气(R.layout.student\u progressreport\u列表视图,容器,false);
设置选项菜单(真);
SessionManagement SessionManagement=新的SessionManagement(getContext());
master_id=sessionManagement.getMasterId();
listView=(listView)view.findViewById(R.id.list\u student\u progress\u report);
getUserProgressData();
返回视图;
}
public void getUserProgressData(){
字符串URL=Navigation_URL+“?StdID=“+master_id;
StringRequest StringRequest=新的StringRequest(Request.Method.GET,URL,
新的Response.Listener(){
@凌驾
        for (int i = 0; i < jArray.length(); i++) {
        JSONObject jsonObject = jArray.getJSONObject(i);
        System.out.println(i);
        String course = jsonObject.getString("CourseName");
        String examDescription = jsonObject.getString("examDescription");
        if(arrayList.contains(examDescription))) {
            student_list_courses.get(arrayList
                    .indexOf(examDescription)).addCourses(course);
        }
        else{
            StudentProgressReportPojo progressReportPojo = new StudentProgressReportPojo(examDescription);
            progressReportPojo.addCourses(course);
            arrayList.add(examDescription);
            student_list_courses.add(progressReportPojo);
        }

    }
            viewHolder.student_progress_report_courses
.setText(student_list_courses.get(postion).getCourses().get(i));
for(int x=0;x<student_list_courses.get(postion).getCourses().size();x++){
LinearLayout coursesViewDynamic = (LinearLayout) inflater
.inflate(R.layout.student_progress_report_courses_listitem, parent, false);
TextView textView=(TextView) coursesViewDynamic.findViewById(R.id.student_progressreport_subject_coursename);
textView.setText(student_list_courses.get(postion)
  .getCourses().get(i));
viewHolder.coursesLayout.addView(coursesViewDynamic);
}