首页 > 解决方案 > 如何处理 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);
  }
}

标签: javaandroidandroid-recyclerview

解决方案


您需要使用 itemView。

viewHolder.itemView.setOnClickListener(new View.OnClickListener() {                
      @Override
      public void onClick(View v) {
          Toast.makeText(quote.this,"hello",Toast.LENGTH_LONG).show();
      }
});

推荐阅读