gpt4 book ai didi

android - 使用 FirestoreRecyclerAdapter 时如何获取 Firestore 文档 ID?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:14 25 4
gpt4 key购买 nike

我正在使用 Firestore 来存储“图表”集合。我需要查询集合以获取所有具有登录用户 ID 的图表。我有一个显示适当图表的 FirebaseRecyclerAdapter(查询通过 FirestoreRecyclerOptions 传入)。

但是,我需要访问每个图表的文档 key ,但我不知道如何获取该信息。理想情况下,我想在从数据库中检索图表后立即将其设置为图表模型中的变量,但“ map ”似乎没有提供将文档键映射到模型中的值的方法.如果无法做到这一点,那么另一种解决方案就是在 BindViewHolder 中检索它并将其存储在不可见的 View 中以供稍后读取。

在我的主要 Activity 中我有:

FirestoreRecyclerOptions<Chart> recyclerOptions = new FirestoreRecyclerOptions.Builder<Chart>()
.setQuery(mChartsQuery, Chart.class)
.build();

mAdapter = new ChartListAdapter(recyclerOptions, this.getActivity());

mChartsQuery 获取具有特定用户 ID 的图表。

图表是这样创建的(用户在表单字段中输入了“nameString”):

   Map<String, Object> newChart = new HashMap<>();
newChart.put("uid", userId);
newChart.put("name", nameString);

mDatabase.collection("charts")
.add(newChart)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {...});

我的 ChartListAdapter 类是:

public class ChartListAdapter
extends FirestoreRecyclerAdapter<Chart, ChartViewHolder> {

public ChartListAdapter(FirestoreRecyclerOptions recyclerOptions) {
super(recyclerOptions);

}

@Override
protected void onBindViewHolder(ChartViewHolder holder, int position, Chart model) {

// THIS IS WHERE I NEED THE DOCUMENT ID, SO I CAN
// PASS IT INTO THE INTENT AS EXTRA_CHART_KEY

// Set click listener for the chart
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), ChartViewActivity.class);
intent.putExtra(ChartViewActivity.EXTRA_CHART_KEY, chartKey);
startActivity(intent);
}
});
// Bind Chart to ViewHolder
holder.bindToChart(model);
}

@Override
public ChartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_chart, parent, false);

return new ChartViewHolder(view);
}
}

因此,我需要能够在 onBindViewHolder 中检索文档 ID。我找到了一个解决方案,它说使用 getSnapshots().get(position).getKey();但是 getSnapshots().get(position) 只是检索一个图表,其中没有设置 key 。

最佳答案

找到解决方案...在我使用的 onBindViewHolder 中

getSnapshots().get(position).getKey();

但应该是

getSnapshots().getSnapshot(position).getId();

正确的版本工作正常,并获取文档 ID。

关于android - 使用 FirestoreRecyclerAdapter 时如何获取 Firestore 文档 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50181956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com