2017-08-07 17 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

Your fetchEmpName();只有一次調用onCreateView時,如果你想從另一個片段重新獲取日期,那麼你必須再次調用你的方法,你可以通過在onResume中調用它來實現。

相關問題