2014-03-29 3 views
2

탐색 서랍 어댑터에 문제가 있습니다. 다음과 같은 항목을 표시합니다 : Favorito, Categorias 및 categorias 아래의 작은 하위 범주.탐색 서랍의 동적 레이아웃보기가 깨졌습니다

기본적으로 big_layout.xml 파일을 사용하도록 탐색 창 어댑터를 프로그래밍했지만 위치가 특정 값보다 큰 경우 small_layout.xml 파일을 사용합니다.

처음 몇 개 항목에서는 정상적으로 작동하지만 문제는 나머지 항목을 보려면 big_layout.xml을 사용하고 다시 스크롤하면 원래의 큰 항목이 변경됩니다. 작은 레이아웃을보고 사용하십시오! 아래

코드이며,이 나쁜 결과의 스크린 샷입니다 : 내가 뭘 잘못 아무것도 http://i.stack.imgur.com/QWwts.jpg

@Override 
public View getView(int position, View view, ViewGroup parent) { 
    if (view == null) { 
     LayoutInflater laoutInflater = (LayoutInflater) 
       context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     if (getItemId(position)>3) 
      view = laoutInflater.inflate(R.layout.drawer_list_item_small, null); 
     if (getItemId(position)<=3) 
      view = laoutInflater.inflate(R.layout.drawer_list_item, null); 
    } 

    ImageView icon = (ImageView) view.findViewById(R.id.icon); 
    icon.setImageResource(drawerItems.get(position).getIcon());   
    TextView title = (TextView) view.findViewById(R.id.title); 
    title.setText(drawerItems.get(position).getTitle()); 
    return view;} 

있습니까? , 전망을 안정시키는 책임있는지도 모르는 무언가가 있는가?

어떻게 해결할 수 있습니까?

답변

0

재활용 문제가 있습니다. 아래로 스크롤하고 뒤로 스크롤하면 작은 레이아웃을 사용하는 뷰가 더 이상 필요하지 않으므로 리사이클 할 수 있습니다. 이제 뷰가 ​​null이 아니므로 레이아웃은 위치에 따라 다시 초기화되지 않고 새로운 내용

다음 방법을 무시하고 목록 어댑터 클래스에서 ViewTypes를 사용하여이 문제를 해결할 수 있습니다.

@Override 
public int getItemViewType(int position) { 
    return (position > 3) ? 0 : 1; 
} 

@Override 
public int getViewTypeCount() { 
    return 2; 
} 

그런 다음에 getView()는 잘못된보기 유형 인 경우 (재활용)보기를 제공하지 않습니다.

@Override 
public View getView(int position, View view, ViewGroup parent) { 
    if (view == null) { 
     int layout = getLayoutForViewType(position); 
     view = LayoutInflater.from(parent.getContext()).inflate(layout, null); 
    } 
    ... 
    return view; 
} 

private int getLayoutForViewType(int position) { 
    if (getItemViewType(position) == 0) { 
     return R.layout.blahblahblah; 
    } 
    return R.layout.bloobloobloo; 
} 
+0

감사합니다. 그게 내 문제를 해결해 줬어. 젠체하는 젠체하는 사람 –

관련 문제