2017-02-28 2 views
1

Ich berufe einige Telefone und E-Mails eines Kontakts über JSONarray, für jedes dieser Elemente erstellt es einen neuen EditText (mit dem Telefon oder E-Mail).Wie aktualisiere ich JSONobject, wenn sich ein EditText-Inhalt ändert?

Ich möchte wissen, wie ich mein JSON-Objekt aktualisieren kann, wenn Benutzer die Telefonnummer oder eine E-Mail ändern. Danach möchte ich dieses JSON-Objekt einem JSON-Array hinzufügen, um es an meinen Dienst zu senden.

Dies ist der Code, wo ich Elemente in EditText ist gesetzt:

try { 
       multiplesArray = new JSONArray(multiples); 
       //multiplesUpdatedArray = new JSONArray(); 
       System.out.println(multiplesArray.toString(2)); 

       for (int i=0; i<multiplesArray.length(); i++) { 
        JSONObject contact = new JSONObject(); 
        String type = multiplesArray.getJSONObject(i).getString("tipo"); 
        String data = multiplesArray.getJSONObject(i).getString("texto"); 
        String id = multiplesArray.getJSONObject(i).getString("id"); 

        if (type.equals("phone")) { 
         final EditText etPhoneItem = new EditText(this); 
         etPhoneItem.setText(data); 
         viewPhonesContainer.addView(etPhoneItem); 

        } else if (type.equals("email")) { 
         final EditText etEmailItem = new EditText(this); 
         etEmailItem.setText(data); 
         viewEmailContainer.addView(etEmailItem); 

        } 

        contact.put("tipo", type); 
        contact.put("id", id); 
        contact.put("texto", data); 
        contact.put("cat", ""); 
        contact.put("cat_id", ""); 

        /*multiplesUpdatedArray.put("tipo"); 
        multiplesUpdatedArray.put(type); 
        multiplesUpdatedArray.put("id"); 
        multiplesUpdatedArray.put(id); 
        multiplesUpdatedArray.put("texto"); 
        multiplesUpdatedArray.put(data);*/ 
       } 

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

ich einige Code mit "setOnFocusChangeListener" versuchen, aber es hat nicht funktioniert :-(

Vielen Dank im Voraus

Antwort

1

Verwenden addTextChangeListener.

editText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence pCode, int start, int before, int count) { 
       // change your JSONObject 
       jsobObject.put("key", "value"); 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 
1

Sie können es tun.

1

Sie können einfach textView.addTextChangedListener(yourTextWatcherListener) verwenden, um den Text zu erhalten, wenn der Benutzer den Text ändert. Aber warum aktualisieren Sie diesen Text in json frequetly, denn mit TextWatcher werden Sie am Ende aktualisieren Sie den JSON für jedes einzelne Zeichen, das Sie eingeben. Das Aktualisieren von JSON ist häufig sehr teuer und sehr schlecht. Anstatt den Textwatch-Listener zu verwenden, formt einfach den JSON, wenn du den Post-Button drückst.

Wenn Sie sehr klar sind, dass Sie es häufig aktualisieren werden, erstellen Sie Pojo-Klassen entsprechend der JSON-Struktur. Das Aktualisieren der Variablen der Klasse ist nicht teuer. Konvertieren Sie die Pojo-Klasse in Json mit Jackson, wenn die Bearbeitung abgeschlossen ist.

JSON to POJO

Verwandte Themen