这是我的切换按钮的代码段。
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();
}
}
});
对我来说,点击按预期工作。甚至点击切换按钮。但滑动只是切换它,但没有达到功能。
如何以相同的方式为切换按钮制作幻灯片和点击工作?
答案 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();
}
}
});
我希望我能帮到你。 祝你好运