#java #android
#java #Android
Вопрос:
У меня есть ScrollView с несколькими динамически создаваемыми блеснами. Каждый счетчик помечается тегом в цикле и имеет общий setOnItemSelectedListener. Но когда происходит событие, у меня появляется эта ошибка: «Попытка вызвать виртуальный метод ‘java.lang.Строка java.lang.Object.toString()’ для нулевой ссылки на объект» в строке, отмеченной ***. Похоже, он не работает со счетчиком. В то же время он хорошо работает с ImageView. Почему?
void ShowList() {
LinearLayout linLayout = (LinearLayout) findViewById(R.id.nrlinLayout);
LayoutInflater ltInflater = getLayoutInflater();
linLayout.removeAllViews();
for (int i = 0; i < Trans.size(); i ) {
View item = ltInflater.inflate(R.layout.list_rnd, linLayout, false);
ImageView ivDelete=(ImageView) item.findViewById(R.id.rndDeleted);
ivDelete.setTag(i);
ivDelete.setOnClickListener(v-> {
Trans.remove(Integer.parseInt(v.getTag().toString()));
ShowList();
});
Spinner sp=(Spinner) item.findViewById(R.id.rndspinner);
acts = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Actions);
acts.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(acts);
sp.setTag(i);
sp.setSelection(Trans.get(i)-1);
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View v, int position, long id) {
*** int ind = Integer.parseInt(v.getTag().toString());
Trans.set(ind, position 1);
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
}
});
item.getLayoutParams().width = LinearLayout.LayoutParams.MATCH_PARENT;
linLayout.addView(item);
}
}
Комментарии:
1. v — это TextView для отображения текста в счетчике, поэтому измените
v.getTag()
наparentView.getTag()
.2. Где были мои глаза! Большое спасибо!
Ответ №1:
i_A_mok ответил в комментариях: v — это TextView для отображения текста в счетчике, поэтому измените v.getTag() на parentView.getTag() .