在调整行时,列表中的列表中的行的备用背景
-
11-12-2019 - |
题
我正在使用自定义listfragment来显示一个列表,其中偶数是背景和奇数行没有。为此,我用overriden getView(int,视图,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));
}
. 解决方案
在屏幕上不可见后,可以重复使用的视图。
在原始代码中,一旦背景设置为R.Drawable.mardor_wink_normal,它是r.cdrawable.marcador_wink_normal。添加否则时,您可以在这些重用视图上正确设置后台。
其他提示
好的,我解决了它只是添加了语句:
@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;
}
.
但我仍然不明白为什么问题发生了。
不隶属于 StackOverflow