我正在尝试基于getAdapterPosition()计算点击次数。并且它正常工作。代码下方
@Override
public void onClick(View v) {
// Do button click handling here
if ( posisi2==getAdapterPosition() ) {
clickcount--;
tombolbaca.setText("Baca " + clickcount + "x");
if (clickcount <= 0)
{
mTitle.setVisibility(View.GONE);
rl2.setVisibility(View.GONE);
}
} // adapter
} // onClick
但是当我尝试使用两个字符串的比较来计算点击次数时,出现了问题。结果是,计算机只能计数一次。您能帮我解决问题吗?问题出在这里:
public Button tombolbaca;
private int klik10 = 10;
@Override
public void onClick(View v) {
tombolbaca = (Button) v.findViewById(R.id.buttonbaca);
// Problem here
if( tombolbaca.getText().toString().equals("Baca 10x") ) {
klik10--;
tombolbaca.setText("Baca " + klik10 + "x");
if (klik10 <= 0)
{
mTitle.setVisibility(View.GONE);
rl2.setVisibility(View.GONE);
}
}
} // onclick
答案 0 :(得分:1)
好,现在知道了。
问题出在逻辑上:这是您的代码,由文本而不是代码编写
if( tombolbaca.getText().toString().equals("Baca 10x"){ // this line says "if the text is exactly Baca 10x, go on"
klik10--; // this line says: "make the value of klik10 = klik10 -1
tombolbaca.setText("Baca " + klik10 + "x"); //this line says "set text of tombolbaca as the composition of the strings and the value of klik10
if (klik10 <= 0) //if klik10 is equal or less than 0, do this
{
mTitle.setVisibility(View.GONE);
rl2.setVisibility(View.GONE);
}
所以,问题出在这里:
第一次迭代:
klik10 = 10
it enter the first if
klik10 will now be 9
text will be Baca 9x
not less than 1, so skip the if
第二次迭代
klik10 = 9 (because you set it before)
not going into if
所以,问题在于,只有文本是Baca 10x时,您才可以进入,但是在第一次迭代之后,它就不再是了。
解决方案可能是这样:
@Override
public void onClick(View v) {
klik10--;
tombolbaca.setText("Baca " + klik10 + "x");
if (klik10 <= 0)
{
mTitle.setVisibility(View.GONE);
rl2.setVisibility(View.GONE);
}
}
如果写的话,则不需要if。您只需将其删除,代码即可使用。
如果没有,请告诉我为什么有if子句,我将修复上面的代码:)
PS:
如果要检查文本是否为正确的计数器,请在以下情况下执行以下操作:
if(tombolbaca.getText().String().equals("Baca " + klik10.toString() + "x"){
...
答案 1 :(得分:0)
第二次尝试时,比较将在"Baca 9x".equals("Baca 10x")
与if语句不起作用
请尝试
if( !tombolbaca.getText().toString().equals("Baca 0x") ) { //using "Baca 0x"
...
}