2017-09-24 4 views
1

firebaseから特定の日付を編集するにはどうすればいいですか?私が望むのは、リストビューではイベントのリストであり、ユーザーは特定のイベントで長いクリックを実行して編集したいと考えています。ユーザーが既に長いクリックを行った場合、イベントを削除または編集する2つのオプションがあります。私はすでにdeleteメソッドを実行しましたが、私の問題は更新メソッドです。オプションでユーザーが更新をクリックすると、別のアクティビティに移動し、編集することを選択したイベントのすべてのデータが編集テキストに表示され、ユーザーはすでにイベントを編集できます。どうすればいいの?Android:FireTextデータを取得してEditTextに表示し、編集して内容を保存します

私があなたを助けてくれることを願っています。ありがとうございました!あなたはまだあなたが更新し、値を設定したい日付の子のパスを入力することができ、イベントオブジェクト内

databaseReference = FirebaseDatabase.getInstance().getReference("events_users").child(userUid); 
    listViewEvents = (ListView) findViewById(R.id.listViewEvents); 
    eventInfos = new ArrayList<>(); 

    // listViewEvents.setLongClickable(true); 

    listViewEvents.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { 

      EventInfo eventInfo = eventInfos.get(i); 
      showUpdateDeleteDialog(eventInfo.getEventId(), eventInfo.getEventTitle()); 
      return true; 
     } 
    }); 

private void showUpdateDeleteDialog(final String eventId, String eventTitle){ 
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); 
    LayoutInflater inflater = getLayoutInflater(); 
    final View dialogView = inflater.inflate(R.layout.update_delete_dialog, null); 
    dialogBuilder.setView(dialogView); 

    final Button buttonUpdate = (Button) dialogView.findViewById(R.id.buttonUpdateEvent); 
    final Button buttonDelete = (Button) dialogView.findViewById(R.id.buttonDeleteEvent); 

    dialogBuilder.setTitle(eventTitle); 
    final AlertDialog b = dialogBuilder.create(); 
    b.show(); 

    buttonDelete.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      deleteEvent(eventId); 
      b.dismiss(); 
     } 
    }); 

    buttonUpdate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      EventInfo eventInfo = new EventInfo(); 
      Intent intent = new Intent(_8_ViewEventMember.this, EventUpdate.class); 

      startActivity(intent); 
     } 

    }); 

} 

private boolean deleteEvent (String id) { 
    //getting the specified artist reference 
    auth = FirebaseAuth.getInstance(); 
    String userUid1 = auth.getCurrentUser().getUid(); 
    DatabaseReference dR = FirebaseDatabase.getInstance().getReference("events_users").child(userUid1).child(id); 
    DatabaseReference dR1 = FirebaseDatabase.getInstance().getReference("events").child(id); 

    //removing artist 
    dR.removeValue(); 
    dR1.removeValue(); 

    Toast.makeText(getApplicationContext(), "Event Deleted", Toast.LENGTH_LONG).show(); 

    return true; 
} 

private boolean updateEvent(String id, String title, String dateStart, String dateEnd, String timeStart, String timeEnd, 
          String location, 
          String description){ 
    auth = FirebaseAuth.getInstance(); 
    String userUid1 = auth.getCurrentUser().getUid(); 
    DatabaseReference dR = FirebaseDatabase.getInstance().getReference("events_users").child(userUid1).child(id); 
    DatabaseReference dR1 = FirebaseDatabase.getInstance().getReference("events").child(id); 

    EventInfo eventInfo = new EventInfo(id, title, dateStart, dateEnd, timeStart, timeEnd, location, description); 
    dR.setValue(eventInfo); 
    dR1.setValue(eventInfo); 

    Toast.makeText(getApplicationContext(), "Event Updated", Toast.LENGTH_LONG).show(); 
    return true; 
} 

protected void onStart() { 
    super.onStart(); 

    databaseReference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      eventInfos.clear(); 

      for (DataSnapshot postSnapshot: dataSnapshot.getChildren()){ 
       EventInfo eventInfo = postSnapshot.getValue(EventInfo.class); 

       eventInfos.add(eventInfo); 
      } 

      EventInfo_Adapter eventInfoAdapter = new EventInfo_Adapter(_8_ViewEventMember.this, eventInfos); 
      listViewEvents.setAdapter(eventInfoAdapter); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 

答えて

1

は、ここに私のコードです。

DatabaseReference dR = FirebaseDatabase.getInstance().getReference("events_users").child(userUid1).child(id); 
DatabaseReference dR1 = FirebaseDatabase.getInstance().getReference("events").child(id); 
DatabaseReference dateReference = dR.child("date_path"); 
DatabaseReference dateReference1 = dR1.child("date_path"); 
dateReference.setValue("new_date"); 
dateReference1.setValue("new_date"); 
+0

ありがとう!長いアイテムをクリックしてイベントのデータを取得する方法と、次のアクティビティのedittextに表示する方法はありますか? –

関連する問題