Я пытаюсь получить другой идентификатор с for
.У меня есть CardView с разными идентификаторами для каждой карты, и я хотел бы получать данные при нажатии.
Я сделал это:
public void setToggleEvent(final GridLayout mainGrid) {
for ( int i = 0; i < mainGrid.getChildCount(); i++){
count = i;
final CardView cardView = (CardView)mainGrid.getChildAt(i);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(cardView.getCardBackgroundColor().getDefaultColor() == -1) {
for (int f = 0; f < mainGrid.getChildCount(); f++){
if (f == count) {
int index = f;
String idFood = "food" + index;
int resID = getResources().getIdentifier(idFood, "id", getPackageName());
foodName = findViewById(resID);
foodName.getText();
}
}
//canvi color de fons
cardView.setCardBackgroundColor(Color.parseColor("#FF6F00"));
foodData = foodName.toString();
selectedVegetables.add(foodData);
} else {
cardView.setBackgroundColor(Color.parseColor("#FFFFFF"));
Toast.makeText(VegetablesActivity.this, "Food Selected", Toast.LENGTH_SHORT).show();
}
}
});
}
}
У каждой карты есть идентификатор под названием food0, food1, food2 ....
Как видно из кода, я сделал это, чтобы получить идентификаторы:
String idFood = "food" + index;
int resID = getResources().getIdentifier(idFood, "id", getPackageName());
foodName = findViewById(resID);
foodName.getText();
, а затем:
foodData = foodName.toString();
selectedVegetables.add(foodData);
Но когда я запускаю, он говорит, что foodName
равен нулю (java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference
)
и находится в этой строке, где появляется ошибка
foodName.getText();
Есть идеи?Извините за мой плохой английский, это не мой родной язык, надеюсь, каждый мог понять это.