質問

カスタムListFragmentを使用して、行さえバックグラウンドと奇数行がないリストを表示しています。これを行うには、オーバーライデンスのgetView(int、view、viewgroup)メソッドを使用してArrayAdapterのサブクラスを作成し、そこでさえさえ偶数行のバックグラウンドリソースを設定しました。

働きましたが、バックグラウンドの有無にかかわらず、ビューの寸法を同じように調整する必要があるため、LayoutParamsを次のように調整しました。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    if ((position & 1) == 0) {
        view.setBackgroundResource(R.drawable.marcador_wink_normal);
    }
    ViewGroup.LayoutParams params = view.getLayoutParams();
    params.height = rowHeight;
    view.setLayoutParams(params);
    return view;
}
.

私はこれを試してみました、そして、私がスクロールしてから上がるまで働いているようでした。

私の質問は:私は何を間違っているのですか?

フラグメントのV4サポートライブラリを使用しています。これは、カスタムListFragmentのoncreate(バンドル)メソッドです。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
            android.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;

    setListAdapter(new WinkAdapter(getActivity(), layout, TEST_LIST));
}
.

役に立ちましたか?

解決

リストを構成するために使用されるビューは、画面に表示されずに再利用されます。

あなたの元のコードでは、与えられたビューで背景がR.drawable.marcador_wink_normalに設定されたら、常にr.dwable.marcador_wink_normalでした。他のものを追加したら、これらの再利用されたビューで背景を正しく設定しました。

他のヒント

大丈夫、 eles 文を追加するだけで解決しました:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    if ((position & 1) == 0) {
        view.setBackgroundResource(R.drawable.marcador_wink_normal);
    }
    else {
        view.setBackgroundColor(0);
    }
    ViewGroup.LayoutParams params = view.getLayoutParams();
    params.height = 100;
    view.setLayoutParams(params);
    return view;
}
.

しかし、問題が起こった理由はまだわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top