我正在使用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或名称以传递给另一个活动?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)