Счетчик ссылок по тегу

#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() .