切换按钮 - 单击工作但滑动开关在android中不起作用

时间:2016-07-23 12:56:26

标签: android

这是我的切换按钮的代码段。

productChildViewHolder.switchBtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                //Utility.displayToast("here");
                //Is the switch is on?
                boolean on = ((Switch) v).isChecked();
                if (on) {
                    productVariant.setAvailable(1);
                } else {
                    productVariant.setAvailable(0);
                }

                JSONObject jsonObject = new JSONObject();
                try {
                    jsonObject.put("Type", "UPDATE_AVAILABLE");
                    jsonObject.put("ProductID", productVariant.getProductID());
                    jsonObject.put("VariantID", productVariant.getVariantID());
                    jsonObject.put("Available", productVariant.getAvailable());
                    new UpdateProductVariantTask().execute(jsonObject.toString());

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });

对我来说,点击按预期工作。甚至点击切换按钮。但滑动只是切换它,但没有达到功能。

如何以相同的方式为切换按钮制作幻灯片和点击工作?

2 个答案:

答案 0 :(得分:1)

setOnClickListener替换为setOnCheckedChangeListener 在你的监听器内部检查buttonView.isPressed()是否确定它被userer按下(并且没有被框架检测改变)

<强>代码:

productChildViewHolder.switchBtn.setOnCheckedChangeListener(new OnCheckedChangeListener(

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                if(buttonView.isPressed() && isChecked){
                //Your code here
                }
            }
        });

为什么会这样 -

ViewHolder模式呈现&#34; base&#34;查看并夸大更改以获得更好的性能。
不幸的是,Android开发人员执行得很差,导致许多奇怪的问题很难被发现。

我们的选择是什么?

如果可能 - 使用简单的列表视图 如果需求更复杂并且会导致性能问题,请查找开源库here

答案 1 :(得分:0)

你可以试试这个

     productChildViewHolder.switchBtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                productVariant.setAvailable(1);
            } else {
                productVariant.setAvailable(0);
            }
                JSONObject jsonObject = new JSONObject();
            try {
                jsonObject.put("Type", "UPDATE_AVAILABLE");
                jsonObject.put("ProductID", productVariant.getProductID());
                jsonObject.put("VariantID", productVariant.getVariantID());
                jsonObject.put("Available", productVariant.getAvailable());
                new UpdateProductVariantTask().execute(jsonObject.toString());

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });

我希望我能帮到你。 祝你好运