Android中如何获取Firebase RecyclerView点击项的单个字符串?
获取Firebase UI RecyclerView中点击项的单个字符串值
嘿,我来帮你搞定这个问题!你现在用Firebase UI RecyclerView加载数据时,在populateViewHolder里拿到的是每个项的model,但想要点击特定项时获取对应的单个字符串,其实只需要给每个item添加点击事件,并把对应的数据绑定到ViewHolder里就行,具体操作如下:
第一步:修改
SermonViewHolder,添加点击监听和数据存储
在ViewHolder的构造函数里给item的根视图设置点击事件,同时声明变量存储当前项的目标字符串(比如你的audioLink):public class SermonViewHolder extends RecyclerView.ViewHolder { // 存储当前项的音频链接 private String currentAudioLink; public SermonViewHolder(@NonNull View itemView) { super(itemView); // 给整个item视图添加点击监听 itemView.setOnClickListener(v -> { // 点击时就能拿到当前项的audioLink了 if (currentAudioLink != null) { // 这里写你的点击逻辑,比如跳转播放、打印日志等 Log.d("SermonClick", "点击的音频链接:" + currentAudioLink); } }); } // 提供方法给Adapter传递当前项的音频链接 public void setAudioLink(String audioLink) { this.currentAudioLink = audioLink; } }第二步:在
FirebaseRecyclerAdapter中绑定数据到ViewHolder
在populateViewHolder方法里,把当前项的audioLink传给ViewHolder的setAudioLink方法,这样点击时就能拿到对应的数据了:FirebaseRecyclerAdapter<Sermon, SermonViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Sermon, SermonViewHolder>( Sermon.class, R.layout.item_view, SermonViewHolder.class, mDatabase ) { @Override protected void populateViewHolder(SermonViewHolder viewHolder, Sermon model, int position) { String audioLink = model.getAudioLink(); // 将当前项的音频链接绑定到ViewHolder viewHolder.setAudioLink(audioLink); // 这里继续你原来的视图绑定逻辑,比如设置标题、封面等 // viewHolder.setSermonTitle(model.getTitle()); } }; mRecyclerView.setAdapter(firebaseRecyclerAdapter);
补充说明
每个SermonViewHolder对应RecyclerView里的一个item,当populateViewHolder执行时,我们把当前item的专属数据存到ViewHolder的变量中,用户点击该item时,就能直接获取到对应的数据。如果需要的是整个Sermon对象,也可以把currentAudioLink换成Sermon类型的变量,逻辑是一样的。
内容的提问来源于stack exchange,提问作者benruty
相关产品推荐
相关产品推荐

