2017-08-07 13 views
0

以下のコードを使用して、データを取得しています。私が初めてそれを実行すると、すべてのデータが表示されます。新しいデータを挿入すると、正常に挿入されますが、ページを報告してクリックすると、新しいデータや更新されたデータではなく、前のデータが表示されます。フェッチしたPHP Webサービスを使用してAndroidにデータを取得しましたが、新しいデータが追加されるとフェッチできません。

public class Fragment_Emp_Report extends Fragment { 

    List<Get_EmpNameAdapter> get_empNameAdapter1; 
    RecyclerView recyclerView; 

    ProgressBar progressBar; 
    RecyclerView.LayoutManager recyclerViewlayoutManager; 
    RecyclerView.Adapter recyclerViewadapter; 

    String url = "http://ghawadediilip.000webhostapp.com/Services/jsonFetchName.php"; 
    String JSON_NAME = "emp_name"; 

    JsonArrayRequest jsonArrayRequest; 
    RequestQueue requestQueue; 



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

     View view = inflater.inflate(R.layout.fragment_emp_report,container,false); 

     fetchEmpName(); 

     return view; 

    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     get_empNameAdapter1 = new ArrayList<>(); 
     recyclerView = (RecyclerView)view.findViewById(R.id.report_recyclerview); 



     recyclerView.setHasFixedSize(true); 

     recyclerViewlayoutManager = new LinearLayoutManager(getActivity().getApplicationContext()); 

     recyclerView.setLayoutManager(recyclerViewlayoutManager); 
    } 
    public void fetchEmpName() 
    { 
     jsonArrayRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() { 
      @Override 
      public void onResponse(JSONArray response) { 
       jsonFetch(response); 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 
     requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext()); 
     requestQueue.add(jsonArrayRequest); 
     RequestQueue.RequestFinishedListener listener = new RequestQueue.RequestFinishedListener() { 
      @Override 
      public void onRequestFinished(Request request) { 
       recyclerViewadapter.notifyDataSetChanged(); 
      } 
     }; 
     requestQueue.addRequestFinishedListener(listener); 

    } 
    public void jsonFetch(JSONArray array) 
    { 
     for (int i=0;i<array.length();i++) 
     { 
      Get_EmpNameAdapter get_empNameAdapter2 = new Get_EmpNameAdapter(); 
      JSONObject json=null; 
      try { 
       json = array.getJSONObject(i); 
       get_empNameAdapter2.setEmpname(json.getString(JSON_NAME)); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      recyclerView.setAdapter(recyclerViewadapter); 
      get_empNameAdapter1.add(get_empNameAdapter2); 
     } 
     recyclerViewadapter = new Report_Recyclerview_Adapter(get_empNameAdapter1,getContext()); 
     recyclerView.setAdapter(recyclerViewadapter); 
    } 
} 

答えて

0

fetchEmpName(); onCreateViewが呼び出されたときに1回だけ呼び出され、別のフラグメントから戻ったときに日付を再取得したい場合は、再度onResumeで呼び出してメソッドを呼び出す必要があります。

関連する問題