2017-09-09 1 views
0

Volley android 라이브러리로 요청하려하지만 가끔 데이터를 수신하고 때로는 실패합니다. 내가 잘못하고 있습니까? 요청 발리, 때때로 수신 된 데이터가 때때로

는 여기에 내가 요청을

StringRequest strReq = new StringRequest(Request.Method.POST, 
      Config.EDIT_KERANJANG_URL, new Response.Listener<String>() { 

     @Override 
     public void onResponse(String response) { 
      Log.d(TAG, " Response: " + response.toString()); 

      try { 
       JSONObject jsonObject = new JSONObject(response); 
       Config.SUCCESS = jsonObject.getString("success"); 

       Log.e("error", "nilai sukses=" + Config.SUCCESS); 

       if (Config.SUCCESS.equals("1")) { 

        SharedPreferences.Editor editor = getSharedPreferences("CODE_RESUME_EDITK", MODE_PRIVATE).edit(); 
        editor.putString("code_resume_editk", "1"); 
        editor.apply(); 
        finish(); 

       } 
       else { 
        Log.e("error", "tidak bisa ambil data 0"); 
       } 

      } catch (Exception e) { 
       // TODO: handle exception 
       Log.e("error", "tidak bisa ambil data 1"); 
       Toast.makeText(KeranjangEditActivity.this, "Gagal menyimpan!", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }, 

      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.e(TAG, "Login Error: " + error.getMessage()); 
        Toast.makeText(KeranjangEditActivity.this, 
          "Gagal menyimpan!", Toast.LENGTH_LONG).show(); 
       } 

      }) 

    { 

     @Override 
     protected Map<String, String> getParams() { 
      // Posting parameters to login url 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("id_pesanan", sidPesanan); 
      params.put("quantity", sQuantity); 
      params.put("harga", sHarga); 

      return params; 
     } 

    }; 

를 만들기 위해 사용하고 코드입니다 그리고 여기이 목록 항목을 채우는 데 사용하고 내 사용자 지정 어댑터입니다.

public class KeranjangAdapter extends BaseAdapter { 

public static final int TYPE = 2; 
private Context context; 
private String idUserH,idProdukH,idKeranjangH,idFileH; 
private LayoutInflater inflater; 
private List<KeranjangModel> keranjangModels = new ArrayList<KeranjangModel>(); 
private int grandTotal = 0; 
SessionManager sessionManager; 
NumberFormat rupiahFormat; 

private ColorDrawable[] vibrantLightColorList = 
     { 
       new ColorDrawable(Color.parseColor("#ffeead")), 
       new ColorDrawable(Color.parseColor("#93cfb3")), 
       new ColorDrawable(Color.parseColor("#fd7a7a")), 
       new ColorDrawable(Color.parseColor("#faca5f")), 
       new ColorDrawable(Color.parseColor("#1ba798")), 
       new ColorDrawable(Color.parseColor("#6aa9ae")), 
       new ColorDrawable(Color.parseColor("#ffbf27")), 
       new ColorDrawable(Color.parseColor("#d93947")) 
     }; 

public ColorDrawable getRandomDrawbleColor() { 
    int idx = new Random().nextInt(vibrantLightColorList.length); 
    return vibrantLightColorList[idx]; 
} 

public KeranjangAdapter(Context ctx, List<KeranjangModel> keranjangModels) { 
    this.context = ctx; 
    this.keranjangModels = keranjangModels; 
} 

public int getGrandTotal(){ 
    return grandTotal; 
} 

@Override 
public int getCount() { 
    return keranjangModels.size(); 
} 

@Override 
public Object getItem(int location) { 
    return keranjangModels.get(location); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 

    sessionManager = new SessionManager(context); 
    HashMap<String, String> user = sessionManager.getUserDetails(); 
    idUserH = user.get(SessionManager.KEY_ID); 

    if (inflater == null) 
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) 
     convertView = inflater.inflate(R.layout.activity_keranjang_list, null); 

    View vv = inflater.inflate(R.layout.activity_keranjang, parent, false); 
    final CheckBox checkBoxs = (CheckBox) vv.findViewById(R.id.checkAll); 

    parent.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS); 

    final ImageView thumbNail = (ImageView) convertView.findViewById(R.id.fotoProdukK); 
    final TextView spOrder = (TextView) convertView.findViewById(R.id.textInfoK); 
    final TextView hargaSatuan = (TextView) convertView.findViewById(R.id.hargaSatuanK); 
    final TextView harga = (TextView) convertView.findViewById(R.id.textInfoHargaK); 
    final TextView idKeranjang = (TextView) convertView.findViewById(R.id.idKeranjangK); 
    final TextView idProduk = (TextView) convertView.findViewById(R.id.idProdukK); 
    final TextView idFile = (TextView) convertView.findViewById(R.id.idFileK); 
    final TextView quantity = (TextView) convertView.findViewById(R.id.jumOrderK); 
    final ImageButton hapusK = (ImageButton) convertView.findViewById(R.id.hapusK); 
    final ImageButton editK = (ImageButton) convertView.findViewById(R.id.editK); 
    final TextView namaProduk = (TextView) convertView.findViewById(R.id.namaProdukK); 
    final CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.checkItem); 

    final KeranjangModel m = keranjangModels.get(position); 

    Picasso.with(context) 
      .load(m.getFotoProdukK()) 
      .placeholder(getRandomDrawbleColor()) 
      .into(thumbNail); 

    int qty = Integer.parseInt(String.valueOf(m.getQuantityK())); 
    int harg = Integer.parseInt(String.valueOf(m.getHargaK())); 
    int id = Integer.parseInt(String.valueOf(m.getIdKeranjangK())); 
    int idp = Integer.parseInt(String.valueOf(m.getIdProdukK())); 
    int idf = Integer.parseInt(String.valueOf(m.getIdFileK())); 
    int hs = Integer.parseInt(String.valueOf(m.getHargaSatuanK())); 

    rupiahFormat = NumberFormat.getInstance(Locale.GERMANY); 
    String rupiah = rupiahFormat.format(harg); 

    quantity.setText(String.valueOf(qty)); 
    spOrder.setText(m.getSpesifikasiOrderK()); 
    hargaSatuan.setText(String.valueOf(hs)); 
    harga.setText(rupiah); 
    idKeranjang.setText(String.valueOf(id)); 
    idProduk.setText(String.valueOf(idp)); 
    idFile.setText(String.valueOf(idf)); 
    namaProduk.setText(m.getNamaProdukK()); 

    checkBox.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      checkBoxs.setChecked(false); 
      Toast.makeText(context, "toas", Toast.LENGTH_SHORT).show(); 
     } 
    }); 



    return convertView; 
} 

도움을 주시면 감사하겠습니다.

+0

오류 세부 정보를 제공 할 수 있습니까? –

+0

오류가 로그 아웃되지 않습니다 (logcat) @RohitKhatri –

+0

서버, 상태 코드 및 응답 문자열에서 응답이 있습니까? –

답변

0

시간 초과와 관련된 문제 인 것 같습니다. 보내는 요청에 대해 RetryPolicy를 설정할 수 있습니다. 이를 사용하십시오

strReq.setRetryPolicy(new DefaultRetryPolicy(5000, 
       DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
       DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

이 문제가 해결되기를 바랍니다.

+0

5000 값의 유용성은 무엇입니까? Thanks @ ZeeshanShabir –

+0

재시도 정책입니다. 유스 케이스에 따라 값을 변경할 수 있습니다. 다른 값을 치고 시도 할 수 있지만 기본적으로 발리 슛은 5 초이므로 5 초 이상을 사용해야합니다. 이 답변을 볼 수도 있습니다 https://stackoverflow.com/a/22169775/5275639 완벽하게 설명했다. –

+0

다음 코드를 추가했지만 decorView에 여전히 오류가 있습니다 –

관련 문제