我正在使用自定义 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(Bundle) 方法:
@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));
}