Android 是否在特定列表项下显示内部项?
有一个ListView,我在其中使用了动态线性布局来添加内部元素。我希望在特定列表中显示所有特定术语的内部数据(即仅显示特定术语名称和术语名称中的所有信息)。但是,我得到的是另一个列表项的内部项,即不是我所期望的 JSONAndroid 是否在特定列表项下显示内部项?,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,
[
{
"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);
}