문제

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;
}
.

하지만 문제가 왜 일어 났는지 이해하지 못합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top