为什么RecycleView中的水平项目无法在onClick上运行?

时间:2018-05-31 19:36:14

标签: java android android-recyclerview recycler-adapter

[以下代码] RecycleView 中的项目没有点击[它应该打开DetailActivity],我试图找到错误但我不明白在哪里

我尝试了什么:

  • 更改尺寸项目
  • 将RecycleView更改为VERTICAL
  • Write Log.v

我有相同的RecycleViewAdapter,但它是垂直的,并且运行良好。 我的所有项目:https://github.com/sanke46/E-Commerce

RecycleViewAdapter:

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

BasketActivity basketActivity = new BasketActivity();
private List<Item> itemList = basketActivity.getBasketItem();
private ArrayList arr;
private Context mContext;

public SalesRecyclerViewAdapter(Context context, ArrayList<Item> data) {
    this.arr = data;
    mContext = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_sale, parent, false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    final Item item = (Item) arr.get(position);

    Picasso.with(mContext).load(item.getImageUrl()).into(holder.imageView);
    holder.price.setText(item.getPrice() + " $");
    holder.price.setPaintFlags(holder.price.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);
    holder.fixPrice.setText(item.getDiscontPrice() + " $");
    holder.name.setText(item.getName());
    holder.comment.setText(item.getComment());
    holder.gramm.setText(item.converGramms(String.valueOf(item.getGramms())));
    holder.kal.setText(item.getKalories() + " kal");
    holder.addToCart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            itemList.add((Item) arr.get(position));
            basketActivity.setBasketItem(itemList);
        }
    });
    holder.linerSaleClick.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(mContext, DetailActivity.class);
            intent.putExtra("item", item);
            mContext.startActivity(intent);
            Log.v("SALES", "SALES");
        }
    });
}

@Override
public int getItemCount() {
    return arr.size();
}

class ViewHolder extends RecyclerView.ViewHolder {
    private RelativeLayout linerSaleClick;
    private ImageView imageView;
    private TextView price;
    private TextView fixPrice;
    private TextView name;
    private TextView comment;
    private TextView gramm;
    private TextView kal;
    private Button addToCart;

    public ViewHolder(View itemView) {
        super(itemView);
        linerSaleClick = itemView.findViewById(R.id.linerSaleClick);
        imageView = itemView.findViewById(R.id.imageSale);
        price = itemView.findViewById(R.id.price);
        kal = itemView.findViewById(R.id.kal);
        gramm = itemView.findViewById(R.id.gramm);
        name = itemView.findViewById(R.id.name);
        comment = itemView.findViewById(R.id.comments);
        fixPrice = itemView.findViewById(R.id.fixPrice);
        addToCart = itemView.findViewById(R.id.buttonTwo);
    }
}}

1 个答案:

答案 0 :(得分:0)


基本上你的github上的代码与你发布的代码不同。所以可能问题的原因是:
list_sale.xml 我注意到在此视图中com.makeramen.roundedimageview.RoundedImageView您设置了参数android:clickable="true",如果您想在父级(RelativeLayout)上升点击事件,则它将无效。解决方案:删除此行android:clickable="true"