2017-07-03 14 views
0

を削除するには、URLのJSONコードを解析することができます...私のポップアップメニューでは、私は、リストビュー内の項目を削除するには、[削除]オプションを持ってくださいはどのように私はアイテム私はいくつかの助けを必要とするリストビュー

どのように私はこのURLを解析することができますこれは私のリストビュー

@Override 
    protected void onPostExecute(String result) { 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
     super.onPostExecute(result); 

     codigo.setText(recode); 
     nombre.setText(reNombre); 
     nroComprobante.setText(reNumero); 

     final ListAdapter adapter = new SimpleAdapter(Compra.this, prod, 
       R.layout.item_carrito, new String[]{"renglon", "codigo", "descrip", "precio"}, 
       new int[]{R.id.tvreglon, R.id.tvcode, R.id.tvdescrip, R.id.tvprec}); 
     lista_eligida.setAdapter(adapter); 
     Log.d("ADAP", String.valueOf(adapter)); 
     registerForContextMenu(lista_eligida); 

    } 

} 

の結果であり、これは私のポップアップメニューのコードでリストビュー

内の項目を削除するには、JSON ...

public boolean onContextItemSelected(final MenuItem item) { 

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    int id = info.position; 
    switch (item.getItemId()) { 
     case R.id.del: 
      String url = "http://www.air-intra.com/apps/air-app/agregar.php?token=" + Token_Recibido + "&codiart=" + codigo + "&oper=Q&renglon=" + reglo + ""; 
私は??行うことができます...私は再び新しいJSONを解析すべきか

//。?..私は私のポップアップメニューで削除オプションをクリックしたとき が//私はちょうど項目を削除したい

+0

申し訳ありませんあなたはURLで何をしたいのか、それがリストにどのように接続されているのか理解できません。もう少し詳しく説明してください。だから私は理解でき、あなたを助けることができます。 –

+0

urlはjsonの結果です。解析しようとすると例外エラーが発生しますHTTPHANDLERがnullです –

+0

ありがとうございました –

答えて

0

ありがとう私は推測する問題は、あなたがいないメインスレッド上のAPIコールをしようとしていることである

new AsyncTask<Void, Void, String>() 
    { 
     ProgressDialog progressDialog; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      progressDialog = new ProgressDialog(MainActivity.this); 
      progressDialog.setCancelable(true); 
      progressDialog.show(); 
     } 

     @Override 
     protected String doInBackground(Void... params) 
     { 

      String url = "http://www.air-intra.com/apps/air-app/agregar.php?token=" + Token_Recibido + "&codiart=" + codigo + "&oper=Q&renglon=" + reglo + ""; 
     HttpHandler she = new HttpHandler(); 
     String jsonStr = she.makeServiceCall(url); 


     try { 
      JSONObject jsonObj = new JSONObject(jsonStr); 
      JSONArray contacts = jsonObj.getJSONArray("PRR"); 

      prop.clear(); \\Add this line in your code here. 

      for (int i = 0; i < contacts.length(); i++) { 
       JSONObject c = contacts.getJSONObject(i); 

       String codig = c.getString("codigo"); 
       String des = c.getString("descrip"); 
       String prec = c.getString("precio"); 
       String reglon = c.getString("renglon"); 

       Log.d("REGLON", String.valueOf(reglon)); 

       HashMap<String, String> contacto = new HashMap<>(); 
       contacto.put("codigo", codig); 
       contacto.put("descrip", des); 
       contacto.put("precio", prec); 
       contacto.put("renglon", reglon); 
       reg = "" + reglon; 
       prod.add(contacto); 

      if(jsonStr != null) { 
       System.out.println("success"); 
      } else { 
       System.out.println("failed"); 
      } 

      return jsonStr; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 
      progressDialog.dismiss(); 

      System.out.println("result=="+result); 
     } 
    }.execute(); 

:これは

 String url = "http://www.air-intra.com/apps/air-app/agregar.php?token=" + Token_Recibido + "&codiart=" + codigo + "&oper=Q&renglon=" + reglo + ""; 
      HttpHandler she = new HttpHandler(); 
      JSONObject jsonStr = she.makeServiceCall(url); 


      try { 
       JSONObject jsonObj = new JSONObject((Map) jsonStr); 
       JSONArray contacts = jsonObj.getJSONArray("PRR"); 
       for (int i = 0; i < contacts.length(); i++) { 
        JSONObject c = contacts.getJSONObject(i); 

        String codig = c.getString("codigo"); 
        String des = c.getString("descrip"); 
        String prec = c.getString("precio"); 
        String reglon = c.getString("renglon"); 

        Log.d("REGLON", String.valueOf(reglon)); 

        HashMap<String, String> contacto = new HashMap<>(); 
        contacto.put("codigo", codig); 
        contacto.put("descrip", des); 
        contacto.put("precio", prec); 
        contacto.put("renglon", reglon); 
        reg = "" + reglon; 
        prod.add(contacto); 
+0

上記のコードに従って、あなたのビューへの参照を保持しており、方向変更の場合にメモリリークを引き起こすsetTextを実行しています。それを避けるために、コールバックメカニズムまたはハンドラを使用してください。 –

+0

どうすればいいですか? –

0

はこれで上で与えられたあなたのAPI呼び出しのコードを交換しなかった方法です許可されます。だから私はバックグラウンドでそれを入れました。あなたのコードを自分のコードに入れました。あなたのコードは完全ではないようです。実行する前にコードを完成させてください。

+0

@ Zohaibさん、ありがとうございます。彼はdosentの仕事をしています。ポップアップメニュー(Case R.id.delete)内にコードがあります。私は新しいasyncTaskを呼び出すことができると思います。 –

+0

どこからでもAsyncTaskを呼び出すことができます.AsyncTaskは、実際にはメインスレッドを気にすることなくバックグラウンドでタスクを実行するために使用されます。 –

+0

Zohaibの仕事が大変ありがとうございました。別の問題がありました。アイテムを削除すると、同じリストビューを使用して結果を返します。... 1) 2) 3)と私は今 1持っている... 2番目の項目を削除します) 2) 3) 1) 3) –

関連する問題