You need to enable JavaScript to run this app. 如何根据RecyclerView点击传递的位置从Firebase获取对应笔记详情
优惠活动
大模型
产品
解决方案
定价
更多

如何根据RecyclerView点击传递的位置从Firebase获取对应笔记详情

问题根因

  1. 你仅向详情页传递了列表条目位置,未传递对应笔记的唯一标识或内容数据,无法定位到Firebase中对应的笔记条目
  2. 详情页的Firebase监听逻辑遍历了所有笔记数据,最终只会把最后一条笔记内容赋值到控件上,完全没有匹配目标条目

修复方案(推荐直接传值,无需二次请求Firebase,性能更高)

第一步:修改CustomAdapter的点击跳转逻辑

原逻辑仅传position,改为直接传递当前点击条目的时间、笔记内容字段

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
    Model currentNote = models.get(holder.getBindingAdapterPosition());
    holder.time_text.setText(currentNote.getText());
    holder.string_text.setText(currentNote.getNotes());
    holder.constraintLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context.getApplicationContext(), NotesDetails.class);
            // 直接传递需要展示的字段,无需二次查库
            intent.putExtra("noteContent", currentNote.getNotes());
            intent.putExtra("noteTime", currentNote.getText());
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
    });
}

第二步:修改NotesDetails的取值逻辑

直接从Intent取传递过来的字段赋值给对应控件,删除冗余的Firebase遍历逻辑

public class NotesDetails extends AppCompatActivity {
    TextView textShow, timeShow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notes_details);

        textShow = findViewById(R.id.notesShow);
        timeShow = findViewById(R.id.timeshow);

        Intent intent = getIntent();
        // 取传递过来的内容
        String content = intent.getStringExtra("noteContent");
        String time = intent.getStringExtra("noteTime");
        // 赋值给控件
        textShow.setText(content);
        timeShow.setText(time);
    }
}

如果你的需求是必须从Firebase实时拉取最新的笔记内容,需要额外给Model类加noteId字段存储Firebase生成的唯一key,跳转时传递noteId,详情页直接按id查询对应条目即可,无需遍历所有数据。

内容的提问来源于stack exchange,提问作者Sum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 00:21:00