2013-02-27 14 views
6

Ich muss den Text für einen Bereich von Header-Zellen in der Datentabelle ändern.
Um dies zu erreichen, müsste ich die den Zellen zugewiesenen Ansichts-IDs abrufen und speichern, damit sie später zur Identifizierung dieser Zellenansichten verwendet werden können.
Wenn ich jedoch versuche, eine ID für die gerade aufgeblähte Zellansicht zu erhalten, gibt es immer -1 zurück.android view.getId() liefert -1

Hier ist mein Beispielcode:

@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); 

     } 
    } 
...  
} 

Die converView.getId() im obigen Code -1 zurück, trotz der Tatsache, dass die Sicht-ID ist bereits vergeben und ist während der Code-Debugging sichtbar. Zum Beispiel kann ich Folgendes während des Debuggens sehen: converView = LinearLayout (ID = 830042440680)

Irgendeine Idee, warum ich -1 (= NO_ID) im obigen Code bekomme?

Antwort

9

von Android LayoutInflater Dokumentation:

aufpumpen eine neue Ansicht Hierarchie aus der angegebenen XML-Ressource. So

, wenn Sie anrufen

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

converView ist nur durch Ihr Layout inflater erstellen und haben keine ID. Sie sollten ID manuell so einstellen

converView.setId(YOUR_GENERATED_ID); 
+1

Dies ist eine großartige Antwort und es hat mir enorm geholfen. Vielen Dank! Ich habe nicht bemerkt, dass die ID der internen Ansicht, die von xml inflater zugewiesen wurde, nicht zugänglich ist und erneut manuell zugewiesen werden muss. Ich habe jetzt erfolgreich die Aufgabe der Aktualisierung der Kopfzeile Titel zur Laufzeit abgeschlossen. –

+0

Siehe vollständige Lösung unter: [http://stackoverflow.com/questions/15065467] –

+0

Ich bin froh, Ihnen zu helfen) –

Verwandte Themen