java - 如何处理 RecyclerView 中的点击事件
问题描述
我知道这个问题已经被问了 100 次,但我找不到任何与我的问题相关的答案,因为我是新手,而且他们的代码完全不同。我从点击图像时Firebase
开始显示图像,RecyclerView
它必须像弹出窗口或Activity
.
引用.java
public class quote extends AppCompatActivity {
RecyclerView mRecyclerView;
FirebaseDatabase mFirebaseDatabase;
DatabaseReference mRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quote);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Post List");
int noc =2;
mRecyclerView=findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new GridLayoutManager(this,noc));
mFirebaseDatabase=FirebaseDatabase.getInstance();
mRef=mFirebaseDatabase.getReference("Data");
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Model,ViewHolder> firebaseRecyclerAdapter=
new FirebaseRecyclerAdapter<Model, ViewHolder>(Model.class,R.layout.row,ViewHolder.class,mRef) {
@Override
protected void populateViewHolder(ViewHolder viewHolder, Model model, int position) {
viewHolder.setDetails(model.getTitle(), model.getImage());
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(quote.this,"hello",Toast.LENGTH_LONG).show();
}
});
}
};
mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
}
模型.java
public class Model {
String title,image;
public Model(){}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
ViewHolder.java
public class ViewHolder extends RecyclerView.ViewHolder {
View mView;
public ViewHolder( View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(String title, String image){
TextView mTitleTv = mView.findViewById(R.id.rTitleTv);
ImageView mImageTv = mView.findViewById(R.id.rImageView);
mTitleTv.setText(title);
Picasso.get().load(image).into(mImageTv);
}
}
解决方案
您需要使用 itemView。
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(quote.this,"hello",Toast.LENGTH_LONG).show();
}
});
推荐阅读
- localization - 如何使用反应路由器和 i18 直接从 url 配置本地化作为语言参数?
- html - 页面右侧的空间
- python - 为什么 pop 方法不打破这个例子中的 while 循环?
- pandas - 应用 DateFormatter 和 WeekdayLocator 后,时间序列中的条形图超出最后一个日期
- python - 将函数应用于 DataFrame 中的每个单元格并包含来自特定列的值
- python - UpdateRemotePlugins 不做任何事情 | nvim python 插件
- google-sheets - 在 Google 表格中使用 IMPORTHTML 导入数百个表格是否有更有效的方法?
- powershell - 如何在文本 powershell 上打印
- javascript - React 不会更新下拉选项,并且与 console.log 语句不匹配
- javascript - 如果使用 JS,请不要加载 Division