8

データテーブルのヘッダーセルの範囲のテキストを変更する必要があります。
これを実現するには、これらのセルに割り当てられたビューIDを取得して保存し、後でそれらを使用してそれらのセルビューを識別できるようにする必要があります。
ただし、膨らんだばかりのセルビューのIDを取得しようとすると、常に-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()は、ビューIDがすでに割り当てられており、コードのデバッグ中に表示可能であるにもかかわらず、-1を返します。たとえば、デバッグ中に次のことがわかります。converView = LinearLayout(id = 830042440680)

上記のコードで-1(= NO_ID)を取得している理由はありますか?

4

1 に答える 1

11

Android LayoutInflaterのドキュメントから:

指定されたxmlリソースから新しいビュー階層を拡張します。

だからあなたが電話するとき

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

converViewは、レイアウトインフレータによって作成されるだけで、IDはありません。このように手動でIDを設定する必要があります

converView.setId(YOUR_GENERATED_ID);
于 2013-02-27T11:14:09.010 に答える