2014-08-27 2 views
0

저는 Android에 익숙한 iOS 개발자입니다. 내 iOS 앱 중 하나에서이 테이블보기와 같은 섹션 목록보기를 만들려면 어떻게해야합니까? enter image description here섹션 목록보기

+0

인가이 도움이 : http://stackoverflow.com/questions/12397900/how-do-i-implement-a-sectioned-list-in-android – corbin

+0

또는 http://javatechig.com/android/listview-with-section-header-in-android 또는 http://sunil-android.blogspot.com/2013/08/section-header-listview-in- android.html 또는 다음과 같이하십시오. http://umakantpatil.com/posts/android-listview-with-separate-headers-and-images-loading-from-remote-server/ etc 특정 요구 사항에 따라 더 많은 작업을 수행해야합니다. , 그러나 그것은 당신을 시작해야합니다. – corbin

+2

검색 엔진을 사용하여'android sectioned listview'를 검색하면 Stack Overflow 응답, 블로그 게시물 및 GitHub repos를 포함한 많은 페이지가 나타납니다. – CommonsWare

답변

0

바닐라 목록보기를 만드는 방법을 알고 있다고 생각합니다. 기본적으로 어댑터를 만들고이 어댑터를 ListView.setAdapter를 사용하여 listview로 설정합니다. 섹션 별 목록보기의 경우 몇 가지 추가 작업을 수행해야합니다. 여기에는 두 가지 유형의 목록 항목이 있습니다. 1) Apps; 2) 섹션 제목. 따라서 어댑터에서 getView 외에도 getItemViewType 및 getViewTypeCount를 대체해야합니다. 여기

는 코드 데모입니다 :

public class EnhancedListAdapter extends ArrayAdapter<Item> { 

    private static final int TYPE_SECTION = 0; 
    private static final int TYPE_APP = 1; 

    // since you only have 2 types 
    private static final int TYPE_MAX_COUNT = 2; 

    @Override 
    public int getItemViewType(int position) { 
      // your list object should have a getter to tell what type it is 
      switch (getItem(position).getItemType()) { 
       case SECTION: 
        return TYPE_TXT_OUT; 
       case APP: 
        return TYPE_IMG_OUT; 
       default: 
        return -1; 
      } 

    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = LayoutInflater.from(context); 

     // this is the function you just override 
     int type = getItemViewType(position); 

     if (convertView == null) { 

      switch (type) { 
       // I assume you would provide two different row layouts for the Section type and the App type 
       case TYPE_SECTION: 
        convertView = inflater.inflate(R.layout.section, null); 
        break; 
       case TYPE_APP: 
        convertView = inflater.inflate(R.layout.app, null); 
        break; 
      }     
      convertView.setTag(holder); 
     } else { 
      holder = (MessageItemHolder) convertView.getTag(); 
     } 

     // do your stuffs here 

    } 

}