Android 即使在遵循侦听器过程之后,单击“不工作”时的回收器视图项

Android 即使在遵循侦听器过程之后,单击“不工作”时的回收器视图项,android,view,Android,View,我正在尝试从“回收者”视图项目启动一项活动,并按照过程进行操作,但onClick没有在我的应用程序中调用。我已经检查了hasOnClickListeners()并返回true。请帮帮我 public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.ViewHolder> { public List<String> shopDetails; public View view; public Conte

我正在尝试从“回收者”视图项目启动一项活动,并按照过程进行操作,但onClick没有在我的应用程序中调用。我已经检查了hasOnClickListeners()并返回true。请帮帮我

public class ShopAdapter extends 
RecyclerView.Adapter<ShopAdapter.ViewHolder> {

public List<String> shopDetails;
public View view;
public Context context;




public ShopAdapter(List<String> shopDetails){
    this.shopDetails = shopDetails;
}



@Override
public ShopAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int 
viewType) {

   view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_single,parent,false);



    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(final ShopAdapter.ViewHolder holder, int position) {

    final String shop_description_data = "ONE";
    final String shop_name_data = "TWO";

    holder.setShopNameView(shop_name_data);
    holder.setShopInfoView(shop_description_data);
在这里,我将点击监听器设置为我的监听器界面

    mView.setOnClickListener(this);
        Log.d("Listener",mView.hasOnClickListeners()+"");
    }


    public void setShopInfoView(String shopDescText){
        shopDescView = mView.findViewById(R.id.shop_info);
        shopDescView.setText(shopDescText);
    }
    public void setShopNameView(String shopNameText){
        shopNameView = mView.findViewById(R.id.shop_name);
        shopNameView.setText(shopNameText);
    }

    public void startShop(String shopName,String shopDesc){
        Intent shopActivityMainIntent = new Intent(mView.getContext(),MainActivity.class);
        shopActivityMainIntent.putExtra("shopName",shopName);
        shopActivityMainIntent.putExtra("shopDescription",shopDesc);
        mView.getContext().startActivity(shopActivityMainIntent);
    }

    public void setItemClickListener(ItemClickListener itemClickListener){
        Log.d("GOUSE","set item listener");
        this.onItemClickListener = itemClickListener;

    }


    @Override
    public void onClick(View view) {
        Log.d("GOUSE","set item clicked");
        onItemClickListener.onItemClicked(view,getAdapterPosition());
    }
}

}

在适配器使用界面中进行一些更改,以处理回收器视图单击事件,如下面的代码

    private onItemClickListener onItemClickListener;

/**
 * this interface is used to handle recycler view click event.
 */
public interface onItemClickListener {
    void onItemClick(Cricketer cricketer);
}

public void setOnItemClickListener(onItemClickListener onItemClickListener) {
    this.onItemClickListener = onItemClickListener;
}
   @Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, final int position) {
    final Cricketer cricketer = mCricketerList.get(position);
    holder.mTvTitle.setText(cricketer.getName());
    holder.mTvDescription.setText(cricketer.getCountry());
    holder.mTvDate.setText(cricketer.getDateOfBirth());
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onItemClickListener.onItemClick(cricketer);
        }
    });
}
当您将适配器绑定到recycler视图中时,会得到如下代码所示的单击事件

  /**
 * this method used to bind adapter into recycler view.
 */
private void setAdapter() {
    recyclerViewAdapter = new RecyclerViewAdapter(this, mCricketerList);
    mRvData.setAdapter(recyclerViewAdapter);
    recyclerViewAdapter.notifyDataSetChanged();
    recyclerViewAdapter.setOnItemClickListener(new RecyclerViewAdapter.onItemClickListener() {
        @Override
        public void onItemClick(Cricketer cricketer) {
            Toast.makeText(getApplicationContext(), "Cricketer Name::" + cricketer.getName(), Toast.LENGTH_SHORT).show();
        }
    });
}

可能是重复的,不是重复的,长官。答案是我的问题。我也做了同样的事,但什么也没发生。如果你能帮助我,你可以试着在cardview上点击列表来代替这个。只需在onBind holder.cardview.setOnclickListner中找到cardview的ViewById
  /**
 * this method used to bind adapter into recycler view.
 */
private void setAdapter() {
    recyclerViewAdapter = new RecyclerViewAdapter(this, mCricketerList);
    mRvData.setAdapter(recyclerViewAdapter);
    recyclerViewAdapter.notifyDataSetChanged();
    recyclerViewAdapter.setOnItemClickListener(new RecyclerViewAdapter.onItemClickListener() {
        @Override
        public void onItemClick(Cricketer cricketer) {
            Toast.makeText(getApplicationContext(), "Cricketer Name::" + cricketer.getName(), Toast.LENGTH_SHORT).show();
        }
    });
}