Android ListView: getTag () возвращает ноль - PullRequest
1 голос
/ 15 июня 2010

Привет всем,

У меня есть ListView, который содержит кнопку в каждой строке.Следующий код является частью метода getView ()

public View getView(final int position, View convertView, ViewGroup parent) {
        View row = convertView;
        TextView tv;
        Button saveA_button;
        EditText edittext;
        FITB_ViewWrapper wrapper;

  if (row == null) {
       LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       if (ChooseMode_Act.modeInfo.equalsIgnoreCase("Training")) { 
             row = li.inflate(R.layout.exercise_for_training_fitb,parent, false);
       }else {
              row = li.inflate(R.layout.exercise_for_exam_fitb,parent, false);
       }
       wrapper=new FITB_ViewWrapper(row);
       row.setTag(wrapper);
       if (ChooseMode_Act.modeInfo.equalsIgnoreCase("Exam")) {
           saveA_button=wrapper.getSaveAnswer_Button();
           OnClickListener l=new OnClickListener() {

               @Override
               public void onClick(View v) {
                     Integer mp=(Integer)v.getTag();
                     Log.i("mp","my Position is: "+mp);
               }
          };
          saveA_button.setOnClickListener(l);
       }
   }else {
           wrapper=(FITB_ViewWrapper) row.getTag();
 }

Для моего приложения мне нужно знать, к какому элементу принадлежит кнопка, поэтому я пытаюсь его обнаружить.Код

Log.i("mp","my Position is: "+mp);

выводит сообщение: mp myPosition: null

Я не могу понять, почему я получаю «ноль», но не целое число?Как узнать позицию элемента в ListView?

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 15 июня 2010

Log.i ("mp", "Моя позиция:" + позиция);

у вас уже есть позиция!

public View getView(final int position, View convertView, ViewGroup parent) {
0 голосов
/ 15 июня 2010

Представления в ListView повторно используются при прокрутке вверх и вниз. Таким образом, установка значений в getView часто имеет непредвиденные последствия, например, изображение, которое вы намеревались установить для элемента № 5, также появляется в элементах № 10, 15 и 20.

Чтобы избежать этого, если вы хотите установить свойства в getView, вам нужно убедиться, что вы устанавливаете или отменяете их для каждого представления.

Я не уверен, что именно вы пытаетесь выполнить с помощью своего кода, но это может помочь переместить setTag за пределы оператора if, чтобы убедиться, что вы устанавливаете его каждый раз, когда используется представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...