2017-12-29 8 views
0

Wie kann ich Wert in Android Studio aktualisieren? Ich möchte update "msg_viwe_date" was ich es null,Aktualisieren Sie bestimmte Werte mit Firebase für Android Studio

Ich versuche viele Möglichkeiten, die ich in Google-Suche gefunden habe. Mein Problem ist, dass es einen Seq wie "-L1PC7-zenLfcvx36cG0" gibt, also kann ich den Wert nicht aktualisieren, den ich will. Die JSON-Methode sieht in diesem Bild aus.

json

Wie i-Wert im Android Studio aktualisieren? Ich möchte update "msg_viwe_date" was ich es null,

Ich versuche viele Möglichkeiten, die ich in Google-Suche gefunden habe. Mein Problem ist, dass es einen Seq wie "-L1PC7-zenLfcvx36cG0" gibt, also kann ich den Wert nicht aktualisieren, den ich will. Die JSON-Methode sieht in diesem Bild aus. Paket com.androidchatapp;

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.ScrollView; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.firebase.client.ChildEventListener; 
import com.firebase.client.DataSnapshot; 
import com.firebase.client.Firebase; 
import com.firebase.client.FirebaseError; 
import com.firebase.client.MutableData; 
import com.firebase.client.Transaction; 
import com.firebase.client.ValueEventListener; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.Map; 

public class Chat extends AppCompatActivity { 
    private DatabaseReference mDatabase; 

    LinearLayout layout; 
    RelativeLayout layout_2; 
    ImageView sendButton; 
    EditText messageArea; 
    ScrollView scrollView; 
    Firebase reference1, reference2; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    String currentDateandTime = sdf.format(new Date()); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
     mDatabase = FirebaseDatabase.getInstance().getReference(); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_chat); 

     layout = (LinearLayout) findViewById(R.id.layout1); 
     layout_2 = (RelativeLayout)findViewById(R.id.layout2); 
     sendButton = (ImageView)findViewById(R.id.sendButton); 
     messageArea = (EditText)findViewById(R.id.messageArea); 
     scrollView = (ScrollView)findViewById(R.id.scrollView); 

     Firebase.setAndroidContext(this); 
     //reference1 = new Firebase("https://androidchatapp-76776.firebaseio.com/messages/" + UserDetails.username + "_" + UserDetails.chatWith); 
     reference1 = new Firebase("https://leqaafm-c0d5a.firebaseio.com/messages/" + UserDetails.username + "_" + UserDetails.chatWith); 
     //reference2 = new Firebase("https://androidchatapp-76776.firebaseio.com/messages/" + UserDetails.chatWith + "_" + UserDetails.username); 
     reference2 = new Firebase("https://leqaafm-c0d5a.firebaseio.com/messages/" + UserDetails.chatWith + "_" + UserDetails.username); 

     sendButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String messageText = messageArea.getText().toString(); 

       if(!messageText.equals("")){ 
        Map<String, String> map = new HashMap<String, String>(); 

        map.put("message", messageText); 
        map.put("user", UserDetails.username); 
        map.put("msg_date",currentDateandTime); 
        map.put("msg_viwe_date"," "); 

        reference1.push().setValue(map); 
        reference2.push().setValue(map); 

        messageArea.setText(""); 
       } 
      } 
     }); 

     reference1.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       Map map = dataSnapshot.getValue(Map.class); 
       String msg_date = map.get("msg_date").toString(); 
       String message = map.get("message").toString(); 
       String userName = map.get("user").toString(); 

       if(userName.equals(UserDetails.username)){ 
        addMessageBox("You:-\n"+msg_date +"-\n"+ message, 1); 
       } 
       else{ 
        addMessageBox(UserDetails.chatWith + ":-\n" +msg_date +"-\n"+ message, 2); 

       } 
      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
       //String clubkey = dataSnapshot.getKey(); 
       //Toast.makeText(Chat.this, clubkey, Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 

      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 
     }); 
    } 

    public void addMessageBox(String message, int type){ 
     TextView textView = new TextView(Chat.this); 
     textView.setText(message); 

     LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     lp2.weight = 1.0f; 

     if(type == 1) { 
      lp2.gravity = Gravity.LEFT; 
      textView.setBackgroundResource(R.drawable.bubble_in); 
     } 
     else{ 
      lp2.gravity = Gravity.RIGHT; 
      textView.setBackgroundResource(R.drawable.bubble_out); 
     } 
     textView.setLayoutParams(lp2); 
     layout.addView(textView); 
     scrollView.fullScroll(View.FOCUS_DOWN); 
    } 
} 
+0

Möchten Sie einen einzelnen Wert oder den gesamten JSON aktualisieren? –

+0

ja single value – tariq

Antwort

0

Wert zu aktualisieren, Sie einfach setValue() Methode direkt auf der Referenz wie diese verwenden:

reference1.child("msg_viwe_date").child("-L1PC7-zenLfcvx36cG0").setValue("yourNewValue"); 

zu erhalten, die zufälligen Schlüssel, wenn Sie es erhalten drängen, speichern Sie es in eine Variable wie folgt aus:

String key = reference1.child("msg_viwe_date").push().getKey(); 

und dann zu aktualisieren:

reference1.child("msg_viwe_date").child(key).setValue("yourNewValue"); 
+0

wenn ich versuche, die firebase den wert aus dem satz, aber wenn ich ihren weg verwenden: reference1.child ("- L1PC7-zenLfcvx36cG0"). Untergeordnete ("msg_viwe_date"). SetValue ("yourNewValue "); funktioniert es aber wie bekomme ich das Kind, das ist Sequenz danke – tariq

+0

Bitte sehen Sie wieder meine aktualisierte Antwort. –

Verwandte Themen