0

我有 ListView,everubody listItem 有一个按钮。我在第一次单击 imageView 时无法获取事件,但在第一次单击第二次后,我得到了事件。为什么我在第一次单击 imageView 时无法得到响应?

listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, final View view, final int position, long id) {      
        ImageView addLarge =  (ImageView) view.findViewById(R.id.addLargeImage);
        ImageView addSmall =  (ImageView) view.findViewById(R.id.addSmallImage);
        addLarge.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                addProductToCart = true;
                addToOrderListClick = true;
                OrderProduct order = new OrderProduct(listProductId.get(position), listProductName.get(position), 
                        listProductNameEn.get(position), listProductImageUrl.get(position), "large", listProductPriceLarge.get(position));
                orderListProduct.add(order);
                animCopyListItemAddToCart(view, position, mainRelativeLaout);
                Toast.makeText(getBaseContext(), "AddLarge", Toast.LENGTH_SHORT).show();
            }
        });
        addSmall.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                addProductToCart = true;
                addToOrderListClick = true;
                OrderProduct order = new OrderProduct(listProductId.get(position), listProductName.get(position), 
                        listProductNameEn.get(position), listProductImageUrl.get(position), "small", listProductPriceSmall.get(position));
                orderListProduct.add(order);
                animCopyListItemAddToCart(view, position, mainRelativeLaout);
                Toast.makeText(getBaseContext(), "addSmall", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
4

1 回答 1

0

因为您在 ListView onItemClickListener() 中为 ImageViews 设置了 onClickListener()。

因此,用户在您的列表中选择一个项目,然后才会为您的 ImageViews 分配一个 onClickListener。所以第二次,ImageView 的 onclick 监听器被成功触发。

要解决此问题,请在自定义适配器中分配单个 ImageView onClickListener,以便在它们进入视图时分配它们,而不是在用户单击列表中的项目时分配。

于 2013-07-02T23:55:13.393 回答