ListFragment의 행에 대한 대체 배경 행을 크기 조정할 때 작동하지 않습니다.
-
11-12-2019 - |
문제
Rows조차도 배경과 홀로 행이없는 목록을 표시하려면 사용자 정의 목록 널빤지를 사용하고 있습니다.이렇게하려면 @ int, viewgroup 메소드로 arridaptapter의 하위 클래스를 만들고 짝수 행에 대한 배경 리소스를 설정합니다.
그것은 작동했지만, 배경의 치수를 배경이 있고없는 행에서 동등하게 조정해야하므로 다음과 같이 레이아웃 매그램을 조정했습니다.
@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.Drawable.marcador_wink_normal 영원히였습니다.다른 것을 추가하면이 재사용 된 뷰에서 배경을 올바르게 설정했습니다.
다른 팁
알았어, else 문을 추가하기 만하면됩니다.
.
@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;
}
하지만 문제가 왜 일어 났는지 이해하지 못합니다.