2016-06-22 9 views
0

私のWebリクエストコールを開始する前にフラグメントのoncreateメソッドで進捗ダイアログを開始します。 Webリクエストコールで、私がレスポンスを取得し、成功した場合はnotifydatasetchangedメソッドを呼び出してアダプタをリフレッシュします。ただし、ビューが更新される前にダイアログが表示されなくなります。助けてください 。ビューがグリッドビューに表示される前に進捗ダイアログが消える

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    pd = ProgressDialog.show(getActivity(), "Loading...", "Please Wait..."); 
    getProducts(highPrice, lowPrice, isLowtoHigh); 
} 


private void getProducts(String highPrice,String lowPrice,String isLowtoHigh) { 

    // loadingDialog.loading(); 

    APIRequst.getProductsCategory(getActivity().getApplicationContext(), isLowtoHigh, lowPrice, highPrice, new APIRequestListner() { 
     @Override 
     public void onSuccess(String response) { 

      if (response == null || response.isEmpty()) { 
       Log.e("orderhistory", "success but empty"); 
      } else { 
       Log.e("products", response); 
       try { 
        JSONObject mainObj = new JSONObject(response); 
        boolean result = mainObj.has("is_success") && mainObj.getBoolean("is_success"); 

        String resultMessage = mainObj.getString("message"); 
        if (resultMessage.equalsIgnoreCase("Success")) { 

         if (result) { 


          productItems.clear(); 
          adptProductItems.clear(); 
          JSONArray jsonOrderList = mainObj.has("categories") ? mainObj.getJSONArray("categories") : null; 
          if (jsonOrderList != null) { 
           for (int i = 0; i < jsonOrderList.length(); i++) { 
            JSONObject jsonObj = jsonOrderList.getJSONObject(i); 
            ProductListItem newItem = (new Gson()).fromJson(jsonObj.toString(), ProductListItem.class); 
            productItems.add(newItem); 
           } 

           adptProductItems.notifyDataSetChanged(); 
           pd.dismiss(); 
          } 
         } 
        } else { 

         if (resultMessage.equalsIgnoreCase("No Value")) { 

          if (pd.isShowing()) 
           pd.dismiss(); 
          productItems.clear(); 
          adptProductItems.notifyDataSetChanged(); 

          Toast.makeText(getActivity(), "Sorry no prducts to display", Toast.LENGTH_SHORT).show(); 
         } 

        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

      // adapter.notifyDataSetChanged(); 
     } 

     @Override 
     public void onFailure() { 
      if (pd.isShowing()) 
       pd.dismiss(); 
      // loadingDialog.dismissDialog(); 
     } 
    }); 
} 
+0

の下にAPIレスポンスを取得することができますか..? – GvSharma

+0

もちろんです。はい、私は – user1514074

答えて

0

「pd.dismiss();」に移動してください。 ONFAILURE()

@Override 
     public void onFailure() { 
      if (pd.isShowing()) 
       pd.dismiss(); 
      // loadingDialog.dismissDialog(); 
     } 
pd.dismiss(); 

adptProductItems.notifyDataSetChanged(); 
           //pd.dismiss(); remove fromhere 

私は私の場合で行ったようにそれが役立つかもしれ..

+0

できません。それは助けませんでした。私のアダプタクラスが間違っていますか?私は画面に表示され、次に棄却されることを望む – user1514074

関連する問題