2017-06-21 86 views
0

只有当我点击搜索按钮时,才能通过WEB将过滤器应用于数据上的ListView。但是我希望数据在两个EditText都被填充而没有点击搜索按钮时被过滤。我使用两个editText:startdate和endDate。当我点击搜索按钮时,过滤器正在工作,但我希望数据被过滤,而不管在editText中输入日期的顺序。在不使用按钮的情况下过滤ListView项目

AttendanceStudentFragment

public class AttendanceStudentFragment extends Fragment { 


    ListView listView; 
    String Navigation_URL = "http://192.168.100.5:84/api/academics/attendance"; 
    String Navigation_URL_FILTER = "http://192.168.100.5:84/api/academics/searchAttndByDate"; 
    String master_id, date, status, remarks; 
    EditText editTextStartDate, editTextEndDate; 
    Button buttonSearch; 

    Calendar myCalendar = Calendar.getInstance(); 

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

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


     SessionManagement sessionManagement = new SessionManagement(getContext()); 
     master_id = sessionManagement.getMasterId(); 
     listView = (ListView) view.findViewById(R.id.list_student_attendance); 

     editTextStartDate = (EditText) view.findViewById(R.id.student_attendance_startDate); 
     editTextEndDate = (EditText) view.findViewById(R.id.student_attendance_endDate); 
     buttonSearch = (Button) view.findViewById(R.id.student_attendance_searchbutton); 

     // editTextStartDate.setInputType(InputType.TYPE_NULL); 
     // editTextStartDate.requestFocus(); 

     final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
       myCalendar.set(Calendar.YEAR, year); 
       myCalendar.set(Calendar.MONTH, month); 
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
       updateLabelStartDate(); 
      } 
     }; 

     final DatePickerDialog.OnDateSetListener date1 = new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
       myCalendar.set(Calendar.YEAR, year); 
       myCalendar.set(Calendar.MONTH, month); 
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
       updateLabelEndDate(); 


      } 
     }; 


     editTextStartDate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new DatePickerDialog(getContext(), date, myCalendar 
         .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
         myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 
      } 
     }); 


     // collegeAdmissionStartDatePicker.show(); 


     editTextEndDate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new DatePickerDialog(getContext(), date1, myCalendar 
         .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
         myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 


      } 
     }); 

     getAttendanceData(); 
     buttonSearch.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       getAttendanceDataWithFilter(); 

      } 
     }); 


     if(editTextEndDate.length()!=0 && editTextStartDate.length()!=0){ 

      getAttendanceDataWithFilter(); 
     }  


     return view; 


    } 

    private void updateLabelStartDate() { 

     String myFormat = "MM/dd/yy"; //In which you need put here 
     SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); 
     editTextStartDate.setText(sdf.format(myCalendar.getTime())); 

     //editTextEndDate.setText(sdf.format(myCalendar.getTime())); 

    } 


    private void updateLabelEndDate() { 

     String myFormat = "MM/dd/yy"; //In which you need put here 
     SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); 
     // editTextStartDate.setText(sdf.format(myCalendar.getTime())); 
     editTextEndDate.setText(sdf.format(myCalendar.getTime())); 

    } 

    public void getAttendanceData() { 


     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<StudentAttendancePojo> student_attendance_list = new ArrayList<>(); 
          System.out.println(student_attendance_list.size()); 
          JSONArray jArray = new JSONArray(response); 

          // studentFeeInformation = new StudentFeeInformation(response); 
          for (int i = 0; i < jArray.length(); i++) { 
           JSONObject jsonObject = jArray.getJSONObject(i); 

           date = jsonObject.getString("DateOfAttendance").substring(0, 10); 
           status = jsonObject.getString("STATUS"); 
           remarks = jsonObject.getString("Remarks"); 


           // student_list.add(new StudentFeeInformation(status, DateofReceiptIssued, ReceiptNumber, FeeReceivedDate)); 
           // 
           //JSONArray jArray1 = jsonObject.getJSONArray("Description"); 
           StudentAttendancePojo studentAttendancePojo = new StudentAttendancePojo(date, status, remarks); 


           System.out.println("total lengthArray" + jArray.length()); 
           student_attendance_list.add(studentAttendancePojo); 


          } 

          System.out.println("student_list size:" + student_attendance_list.size()); 
          StudentAttendanceAdapter studentAttendanceAdapter = new StudentAttendanceAdapter(getActivity(), student_attendance_list); 
          System.out.println(student_attendance_list.size()); 
          listView.setAdapter(studentAttendanceAdapter); 


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


    } 


    public void getAttendanceDataWithFilter() { 


     // editTextStartDate.getText().toString(); 
     // editTextEndDate.getText().toString(); 
     // String URL = Navigation_URL_FILTER + "?StdID=" + master_id + "&fromDate=" + "2017-06-01" + "&toDate=" + "2017-06-10"; 
     String URL = Navigation_URL_FILTER + "?StdID=" + master_id + "&fromDate=" + editTextStartDate.getText() + "&toDate=" + editTextEndDate.getText(); 
     //String URL = Navigation_URL + "?fromDate=" + editTextStartDate + "&toDate" + editTextEndDate + "StdID" + master_id; 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         try { 


          ArrayList<StudentAttendancePojo> student_attendance_list = new ArrayList<>(); 
          System.out.println(student_attendance_list.size()); 
          JSONArray jArray = new JSONArray(response); 

          // studentFeeInformation = new StudentFeeInformation(response); 
          for (int i = 0; i < jArray.length(); i++) { 
           JSONObject jsonObject = jArray.getJSONObject(i); 

           date = jsonObject.getString("DateOfAttendance").substring(0, 10); 
           status = jsonObject.getString("STATUS"); 
           remarks = jsonObject.getString("Remarks"); 


           // student_list.add(new StudentFeeInformation(status, DateofReceiptIssued, ReceiptNumber, FeeReceivedDate)); 
           // 
           //JSONArray jArray1 = jsonObject.getJSONArray("Description"); 
           StudentAttendancePojo studentAttendancePojo = new StudentAttendancePojo(date, status, remarks); 


           System.out.println("total lengthArray" + jArray.length()); 
           student_attendance_list.add(studentAttendancePojo); 


          } 

          System.out.println("student_list size:" + student_attendance_list.size()); 
          StudentAttendanceAdapter studentAttendanceAdapter = new StudentAttendanceAdapter(getActivity(), student_attendance_list); 
          System.out.println(student_attendance_list.size()); 
          listView.setAdapter(studentAttendanceAdapter); 


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


} 

如何这个问题要解决?

回答

3

试试这个只需添加您的EditText的addTextChangedListener它可以帮助你..

editTextEndDate.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     if(editTextStartDate.getText.toString() != ""){ 
      getAttendanceDataWithFilter(); 
     } 
    } 
}); 
+0

得到了逻辑。谢谢。 – Ghimire

+0

最受欢迎.. :-) –

0

一:使用像OnFocusChangeListener这样的侦听器,当Edittext失去焦点时可以刷新日期! 二:在Edittext上添加一个TextWatcher,当文字改变时,检查它并更新日期!

+0

我不能透过的EditText的长度检查,然后筛选 – Ghimire

+0

使用普通的语言来匹配日期是有用的,但我认为它有点复杂 –

相关问题