2013-02-27 2 views
6

Мне нужно изменить текст для диапазона ячеек заголовка в таблице данных.
Для этого мне нужно будет восстановить и сохранить идентификаторы вида, назначенные этим ячейкам, чтобы впоследствии их можно было использовать для идентификации этих ячеек.
Однако, когда я пытаюсь получить идентификатор только для раздутого представления ячеек, он всегда возвращает -1.android view.getId() возвращает -1

Вот мой пример кода:

@Override 
public View getView(final int row, final int column, View converView, ViewGroup parent) { 
    if (converView == null) { 
     converView = inflater.inflate(getLayoutResource(row, column), parent, false); 
     if (row == -1){ 
      int viewId = converView.getId(); 
      setHeaderId(viewId, column+1); 

     } 
    } 
...  
} 

converView.getId() в приведенном выше коде возвращает -1, несмотря на то, что вид идентификатор уже назначен и доступен во время отладки кода. Например, во время отладки я могу видеть следующее: convertView = LinearLayout (id = 830042440680)

Любая идея, почему я получаю -1 (= NO_ID) в приведенном выше коде?

ответ

9

Из документации Android LayoutInflater:

Накачайте новую иерархию вида из указанного XML-ресурса.

Так что, когда вы звоните

converView = inflater.inflate(getLayoutResource(row, column), parent, false); 

converView просто создать ваш макет Inflater и не имеют идентификатора. Вы должны установить ID вручную, как это

converView.setId(YOUR_GENERATED_ID); 
+1

Это отличный ответ, и это очень помогло мне. Спасибо! Я не понимал, что идентификатор внутреннего вида, назначенный надувом xml, недоступен, и его необходимо снова назначить вручную. Теперь я успешно выполнил задачу по обновлению заголовков заголовков во время выполнения. –

+0

Посмотреть полное решение на: [http://stackoverflow.com/questions/15065467] –

+0

Я рад вам помочь) –

Смежные вопросы