java– 如何在Firestore数据库中获取Android中的文档ID或名称以传递给另一个活动?

java– 如何在Firestore数据库中获取Android中的文档ID或名称以传递给另一个活动?,第1张

概述我正在使用FirestoreRecyclerAdapter.我能够获得每个模型和文档属性.但我想获得文档ID.我尝试过使用模型.自动建议,但没有文件ID或名称我有以下DealsHolder类.这是在Kotlin.然而,所有类的其余部分都在java中.packagecom.guidoapps.firestorerecycleradaptersampleimportc

我正在使用FirestoreRecyclerAdapter.

我能够获得每个模型和文档属性.但我想获得文档ID.

我尝试过使用模型.自动建议,但没有文件ID或名称

我有以下DealsHolder类.这是在Kotlin.然而,所有类的其余部分都在java中.

package com.guIDoapps.firestorerecycleradaptersampleimport com.Google.firebase.firestore.IgnoreExtraPropertIEs@IgnoreExtraPropertIEsdata class DealsResponse(var Title:String? = null,                var price:String? = null,                var dealPrice:String? = null,                var image:String? = null,                var description: String? = null)

我在onCreate()中初始化的以下函数

 private voID getDealsList(){        query query = db.collection("deals").orderBy("dateTime", query.Direction.DESCENDING);        FirestoreRecyclerOptions<DealsResponse> response = new FirestoreRecyclerOptions.Builder<DealsResponse>()                .setquery(query, DealsResponse.class)                .build();        adapter = new FirestoreRecyclerAdapter<DealsResponse, MainActivity.DealsHolder>(response) {            @OverrIDe            public voID onBindVIEwHolder(MainActivity.DealsHolder holder, int position, DealsResponse model) {                progressbar.setVisibility(VIEw.GONE);                holder.textTitle.setText(model.getTitle());                holder.textPrice.setText(model.getPrice());                holder.textDesc.setText(model.getDescription());                holder.textDealPrice.setText(model.getDealPrice());                holder.textPrice.setPaintFlags(holder.textPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);                GlIDe.with(getApplicationContext())                        .load(model.getimage())                        .into(holder.imageVIEw);                holder.itemVIEw.setonClickListener(v -> {                    Snackbar.make(DealsList, model.getTitle(), Snackbar.LENGTH_LONG)                            .setAction("Action", null).show();                });            }

在holder.itemVIEw onClickListener中,我想获取文档ID以便传递给另一个活动

然后是以下DealsHolder.

public class DealsHolder extends RecyclerVIEw.VIEwHolder {    @BindVIEw(R.ID.Title)    TextVIEw textTitle;    @BindVIEw(R.ID.thumbnail)    ImageVIEw imageVIEw;    @BindVIEw(R.ID.description)    TextVIEw textDesc;    @BindVIEw(R.ID.price)    TextVIEw textPrice;    @BindVIEw(R.ID.dealPrice)    TextVIEw textDealPrice;    public DealsHolder(VIEw itemVIEw) {        super(itemVIEw);        ButterKnife.bind(this, itemVIEw);    }}

解决方法:

使用适配器的getSnapshots()方法:

@OverrIDepublic voID onBindVIEwHolder(MainActivity.DealsHolder holder, int position, DealsResponse model) {    // ...    holder.itemVIEw.setonClickListener(v -> {        documentSnapshot snapshot = getSnapshots().getSnapshot(holder.getAdapterposition());        snapshot.getID();        // ...    }); }

getId()方法返回文档的ID,因此在collection / myDoc / someFIEld中,myDoc将是ID.

如果您知道下一个活动中的数据结构,则可以通过标准的firestore.collection(“foo”).document(“bar”)方法重新创建具有该ID的引用.如果您正在寻找通用解决方案,我使用getPath()一堆:

fun Bundle.putRef(ref: documentReference) = putString(REF_KEY, ref.path)fun Bundle.getRef() = FirebaseFirestore.getInstance().document(getString(REF_KEY))

如果您想在模型中使用ID,请使用自定义SnapshotParser:

val options = FirestoreRecyclerOptions.Builder<DealsResponse>()        .setquery(query) {            it.toObject(DealsResponse::class.java).apply { ID = it.ID }        }        .build()
总结

以上是内存溢出为你收集整理的java – 如何在Firestore数据库中获取Android中的文档ID或名称以传递给另一个活动?全部内容,希望文章能够帮你解决java – 如何在Firestore数据库中获取Android中的文档ID或名称以传递给另一个活动?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存