我正在尝试从回收站视图项启动活动并按照过程操作但是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);
这里我设置了来自视图持有者的项目点击监听器
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onItemClicked(View view, int position) {
Log.d("GOUSE","on Item Click");
}
});
}
private void startShopActivity(String shop_name_data, String shop_description_data,View view) {
}
@Override
public int getItemCount() {
return shopDetails.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView shopDescView;
private TextView shopNameView;
private View mView;
private ItemClickListener onItemClickListener;
private CardView shopItem;
public ViewHolder(View itemView) {
super(itemView);
mView = itemView;
这里我将on click侦听器设置为我的侦听器接口
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());
}
}
}
答案 0 :(得分:0)
在适配器使用的界面中进行一些更改以处理回收器视图点击事件,如下面的代码...
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();
}
});
}