Reputation: 331
I have some textviews which I want to check them and return the first which is empty. I've managed to do it this way:
public TextView CurrentPos(){
if (!wordLetter1.getText().toString().equals("*") &&
!wordLetter2.getText().toString().equals("*") &&
!wordLetter3.getText().toString().equals("*") &&
!wordLetter4.getText().toString().equals("*") &&
!wordLetter5.getText().toString().equals("*") &&
!wordLetter6.getText().toString().equals("*") &&
!wordLetter7.getText().toString().equals("*")){
if (wordLetter1.getText().toString().equals("") &&
wordLetter2.getText().toString().equals("") &&
wordLetter3.getText().toString().equals("") &&
wordLetter4.getText().toString().equals("") &&
wordLetter5.getText().toString().equals("") &&
wordLetter6.getText().toString().equals("") &&
wordLetter7.getText().toString().equals(""))
return wordLetter1;
else if (!wordLetter1.getText().toString().equals("") &&
wordLetter2.getText().toString().equals("") &&
wordLetter3.getText().toString().equals("") &&
wordLetter4.getText().toString().equals("") &&
wordLetter5.getText().toString().equals("") &&
wordLetter6.getText().toString().equals("") &&
wordLetter7.getText().toString().equals(""))
return wordLetter2;
else if (!wordLetter1.getText().toString().equals("") &&
!wordLetter2.getText().toString().equals("") &&
wordLetter3.getText().toString().equals("") &&
wordLetter4.getText().toString().equals("") &&
wordLetter5.getText().toString().equals("") &&
wordLetter6.getText().toString().equals("") &&
wordLetter7.getText().toString().equals(""))
return wordLetter3;
else if (!wordLetter1.getText().toString().equals("") &&
!wordLetter2.getText().toString().equals("") &&
!wordLetter3.getText().toString().equals("") &&
wordLetter4.getText().toString().equals("") &&
wordLetter5.getText().toString().equals("") &&
wordLetter6.getText().toString().equals("") &&
wordLetter7.getText().toString().equals(""))
return wordLetter4;
else if (!wordLetter1.getText().toString().equals("") &&
!wordLetter2.getText().toString().equals("") &&
!wordLetter3.getText().toString().equals("") &&
!wordLetter4.getText().toString().equals("") &&
wordLetter5.getText().toString().equals("") &&
wordLetter6.getText().toString().equals("") &&
wordLetter7.getText().toString().equals(""))
return wordLetter5;
else if (!wordLetter1.getText().toString().equals("") &&
!wordLetter2.getText().toString().equals("") &&
!wordLetter3.getText().toString().equals("") &&
!wordLetter4.getText().toString().equals("") &&
!wordLetter5.getText().toString().equals("") &&
wordLetter6.getText().toString().equals("") &&
wordLetter7.getText().toString().equals(""))
return wordLetter6;
else if (!wordLetter1.getText().toString().equals("") &&
!wordLetter2.getText().toString().equals("") &&
!wordLetter3.getText().toString().equals("") &&
!wordLetter4.getText().toString().equals("") &&
!wordLetter5.getText().toString().equals("") &&
!wordLetter6.getText().toString().equals("") &&
wordLetter7.getText().toString().equals(""))
return wordLetter7;
}
return null;
}
The above works fine, but I think that must be a more compat way to achive the same with a less lines of code. I haven't much experience on java and I found some answers for similar situations, which I cannot fully understand. I tried to reduse my code for CurrentPos() method with the above code:
public TextView CurrentPos(){
TextView wordletters[] = {wordLetter1, wordLetter2, wordLetter3,
wordLetter4, wordLetter5, wordLetter6, wordLetter7};
TextView currentPos = null;
for(int i=0; i<wordletters.length; i++){
if(!wordletters[i].toString().equals(("*")) && wordletters[i].equals("")){
currentPos = wordletters[i];
return currentPos;
}
}
return null;
}
which gives error NulPointerException. Obviously I'm doing something wrong, which I don't get it. Is my code completely wrong or just something missing?
Upvotes: 1
Views: 86
Reputation: 132992
in second way you will need to call getText
method for comparing text of TextView's becuase currently you are trying to compare TextView instances from Array as:
for(int i=0; i<wordletters.length; i++){
if(!wordletters[i].getText().toString().equals(("*")) &&
wordletters[i].getText().toString().equals("")){
currentPos = wordletters[i];
return currentPos;
}
}
Upvotes: 1