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

Using Cloud Firestore in Android

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for Yuan Ito Yuan Ito
February 10, 2018

Using Cloud Firestore in Android

Avatar for Yuan Ito

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();