Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Using Cloud Firestore in Android

Yuan Ito
February 10, 2018

Using Cloud Firestore in Android

Yuan Ito

February 10, 2018
Tweet

Other Decks in Technology

Transcript

  1. $PNNPOJTTVFJO"OESPJE w 6* "DUJWJUZ 'SBHNFOU IBTBMJGFDZDMF w PO$SFBUF PO3FTVNF PO1BVTF

    PO%FTUSPZFUDʜ w .BJOUISFBEIBOEMF6* w #MPDLJOHPQFSBUJPOMJLFOFUXPSLSFRVFTUJTOPUBMMPXFEUPSVOPO 6*UISFBE w NBZDBVTF"/3 w 5ISFBEEPFTO`UDBSFBCPVU6*MJGFDZDMF w "DUJWJUZNBZMFBL
  2. 4JNQMF'JSFTUPSFFYBNQMF db.collection("users") .add(user) .addOnCompleteListener((task) -> { if (task.isSuccessful()) { Log.d(TAG,

    "DocumentSnapshot added with ID: " + task.getResult().getId()); } else { Log.w(TAG, "Error adding document", task.getException()); } }); w %BUBPQFSBUJPOMJLFBEE TFU HFU VQEBUF  EFMFUF RVFSZ SFUVSO5BTL Task<DocumentReference> add(Object pojo) Task<DocumentReference> add(Map<String, Object> data)
  3. 8IFSFJTBQJUGBMM w 5IFMJTUFOFSIBTBSFGFSFODFUPUIFBDUJWJUZ w 5IFMJTUFOFSNBZMJWFMPOHFSUIBOUIFBDUJWJUZ w $BVTJOH"DUJWJUZ-FBL protected void onCreate(Bundle

    savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv =findViewById(R.id.documentId); db.collection(“users") .add(user) .addOnSu .addOnSuccessListener((d) -> { Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show(); }); }
  4. w 5IFMJTUFOFSTIBWFUZQFTPGQBSBNFUFST Task addOnCompleteListener(OnCompleteListener listener) Task addOnCompleteListener( Activity activity, OnSuccessListener

    listener) Task addOnCompleteListener( Executor executor, OnSuccessListener listener) 5BLJOHDBSFPGUIFMJGFDZDMF
  5. w MJTUFOFSXJMMCFBVUPNBUJDBMMZSFNPWFEGSPNUIFUBTL XIFOUIF"DUJWJUZHPFTUISPVHIJUTPO4UPQ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

    TextView tv =findViewById(R.id.documentId); db.collection(“users") .add(user) .addOnSu .addOnSuccessListener(this, (d) -> { tv.setText(d.getId()); }); } MJGFDZDMFBXBSFMJTUFOFS
  6. UP0CKFDU w :PVDBONBQUIFEPDVNFOUTOBQTIPUUPUIFPCKFDU public class Chat { private String mName;

    private String mMessage; private String mUid; // user id private Date mTimestamp; Public Chat() {} // default constructor is necessary ... } Chat chat = documentSnapshot.toObject(Chat.class);
  7. w 5IFEPDVNFOUJEJTOPUNBQQFE w 8IFOUPVQEBUFEFMFUFUIFJUFN ZPVOFFEUIF EPDVNFOUJE query.get().addOnSuccessListener(documentSnapshots -> { for

    (DocumentSnapshot d :documentSnapshots) { Chat chat = d.toObject(Chat.class); String objectId = d.getId(); } }
  8. w "EEEPDVNFOUJEXJUI!&YDMVEFBOOPUBUJPO public class Chat extends AbstractChat { … @Exclude

    private String documentId; @Exclude public String getDocumentId() { return documentId; } @Exclude public void setDocumentId(String documentId) { this.documentId = documentId; } } -FUUIFNPEFMIBWFUIF EPDVNFOUJE
  9. 'JSFCBTF3FDZDMFS"EBQUFS w 4VCDMBTTPG3FDZDMFS7JFX"EBQUFS w -JTUFOUPUIFpSFTUPSF w -JGFDZDMFBXBSF public abstract class

    FirestoreRecyclerAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> implements ChangeEventListener, LifecycleObserver
  10. 'JSFTUPSF3FDZDMFS0QUJPOT w 4FUUIFRVFSZBOEUIFMJGFDZDMFPXOFS FirestoreRecyclerOptions<Chat> options = new FirestoreRecyclerOptions.Builder<Chat>() .setQuery(sChatQuery, Chat.class)

    .setLifecycleOwner(this) .build(); new FirestoreRecyclerAdapter<Chat, ChatHolder>(options) { @Override protected void onBindViewHolder(@NonNull ChatHolder holder, int position, @NonNull Chat model) { holder.bind(model); } … }
  11. 'JSFTUPSF3FDZDMFS0QUJPOT TFU2VFSZ w 5IFSFBSFUZQFTPGTFU2VFSZ  w :PVDBOTFU4OBQTIPU1BSTFS public Builder<T> setQuery(@NonNull

    Query query, @NonNull Class<T> modelClass) public Builder<T> setQuery(@NonNull Query query, @NonNull SnapshotParser<T> parser) public Builder<T> setQuery(@NonNull Query query, @NonNull QueryListenOptions options, @NonNull SnapshotParser<T> parser) public Builder<T> setQuery(@NonNull Query query, @NonNull QueryListenOptions options, @NonNull Class<T> modelClass)
  12. w 4FUUIFEPDVNFOUJEJOUIFQBSTFS FirestoreRecyclerOptions<Chat> options = new FirestoreRecyclerOptions.Builder<Chat>() .setQuery(query, snapshot ->

    { Chat chat = snapshot.toObject(Chat.class); chat.setDocumentId(snapshot.getId()); return chat; }) .setLifecycleOwner(this) .build();