点击listItem中的按钮在第一次点击时没有响应,但在第二次点击时响应,如何在第一次点击时设置响应?

时间:2013-07-02 23:33:52

标签: android listview imageview onclicklistener listitem

我有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();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

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

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

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