Android 即使在遵循侦听器过程之后,单击“不工作”时的回收器视图项
我正在尝试从“回收者”视图项目启动一项活动,并按照过程进行操作,但onClick没有在我的应用程序中调用。我已经检查了hasOnClickListeners()并返回true。请帮帮我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
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();
}
});
}