如何在单击listview的不同子项时执行某些操作

时间:2018-06-05 08:08:24

标签: android android-animation counting

这是我的ItemPriceActivity图片:

这里我使用了托管的另一个API的URL,因为我很容易使用这个URL,因为我经常不需要更改地址,所以我使用了那个。所以不要介意那边的医院名称。

这是我的适配器类

这里我想做的就是当我点击列表视图的子项目时,即在购物车图标上,我想要一个动画,它可以在浮动按钮上方显示的文本视图中摇动,而在点击不同的购物车图标时,数字也应该增加并且它应该在未经检查时减少。 请建议我如何执行此类操作并提前感谢您。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    if (inflater == null)
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (convertView == null)
        convertView = inflater.inflate(R.layout.item_layout, null);
        convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ItemPricePojo userInfo = datalist.get(position);
            mlistener.onItemClick(userInfo);
        }
    });
     final TextView totalcart = convertView.findViewById(R.id.totalcartitems);
    final Animation animShake = AnimationUtils.loadAnimation(activity, R.anim.shake);
    final CheckBox checkBox = convertView.findViewById(R.id.addtocart);
    checkBox.setTag(new Integer(position));
    checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            totalcart.startAnimation(animShake);

            if(checkBox.isChecked()){
                count++;
                totalcart.setText(Integer.toString(count));
            }
            else {
                count--;
                totalcart.setText(Integer.toString(count));

            }

        }
    });

    TextView price = convertView.findViewById(R.id.price);
    TextView name = convertView.findViewById(R.id.text1);

    ItemPricePojo m = datalist.get(position);

    price.setText(String.valueOf(m.getPrice()));
    name.setText(String.valueOf(m.getName()));

    return convertView;
   }
}

3 个答案:

答案 0 :(得分:0)

您为checkBox设置了onClick侦听器。 您应该使用setOnCheckedChangeListener来告诉您是否选中了复选框。

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        }
    });

答案 1 :(得分:0)

我建议您切换到recyclerview,因为点击处理更有效,并查看this文章

答案 2 :(得分:0)

经过一番精彩的研究,我找到了答案。我所要做的就是在我的活动类中将textview更改为static,这是我的适配器类无法识别的。我改变了:

public static textview totalcart = findViewById();

在我的活动课上。由于适配器类不允许使用findViewById();所以我们必须在活动类中将它用作静态。现在,我必须从我希望textview通过适配器类识别的位置定义我的活动类:

ItemPriceActivity itemsPriceActivity = new ItemPriceActivity();

然后在使用动画时我这样做了:

final动画animShake = AnimationUtils.loadAnimation(mcontext,R.anim.shake); itemsPriceActivity.totalcart.startAnimation(animShake);

现在,它按照我的意愿运作。