2013-02-27 16 views
6

データテーブルのヘッダーセルの範囲のテキストを変更する必要があります。
これを達成するためには、これらのセルに割り当てられたビューIDを取得して保存する必要があるため、後でそれらのセルビューを識別するために使用できます。
しかし、ちょうど膨張したセルビューのIDを取得しようとすると、常に-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を返し、上記コードのビューIDが既にコードのデバッグ時に割り当てられたと見ることができるされているという事実にもかかわらず、:ここ

は私のサンプルコードです。例えば、私はデバッグ中に以下を見ることができます: converview = LinearLayout(id = 830042440680)

私は上記のコードで-1(= NO_ID)を得ていますか? AndroidのLayoutInflaterのドキュメントから

答えて

9

は、指定されたXMLリソースから新しいビュー階層を膨らませます。

は、だから、

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

converViewは自分のレイアウトインフレータによって作成された呼び出し、何のIDを持っていないとき。このように手動でIDを設定する必要があります

converView.setId(YOUR_GENERATED_ID); 
+1

これはすばらしい答えです。ありがとうございました!私は、xml inflaterによって割り当てられた内部ビューidがアクセス可能でなく、手動で再度割り当てる必要があることを認識しませんでした。私は、実行時にヘッダーセルのタイトルを更新するタスクを正常に完了しました。 –

+0

フル解決策を見る:[http://stackoverflow.com/questions/15065467] –

+0

私はあなたを助けてうれしいです –