2015-07-08 2 views
1

я пытаюсь установить адаптер курсора с двумя различными раскладками, первый один должен быть уникальным, другой - то же самое, но getItemViewType(cursor.getPosition()); всегда возвращает 0 ...Проблем с установкой два layoutsType в CursorAdapter

вот мой адаптер:

общественного класса MyAdapter расширяет CursorAdapter

public static class ViewHolder { 

public ViewHolder (View rootView){}} 

public ProfileAdapter(Activity activity, Cursor c) { 
     super(activity, c); 
     mActivity = activity; 
    } 

@Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     int mLayoutId = -1; 
     mViewType = getItemViewType(cursor.getPosition()); 
     if (mViewType == VIEW_TYPE_MAIN){ 
      mLayoutId = R.layout.main; 
     } else { 
      mLayoutId = R.layout.list_items; 
     } 

     View rootView = LayoutInflater.from(context).inflate(mLayoutId, parent, false); 
     ViewHolder viewHolder = new ViewHolder(rootView); 
     rootView.setTag(viewHolder); 
     return rootView; 

    } 


@Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     mCursor = cursor; 
     mView = view; 
     mViewHolder = (ViewHolder) view.getTag(); 
     mViewType = getItemViewType(cursor.getPosition()); 
     if (mViewType == VIEW_TYPE_MAIN){ 

     } else { 
     } 
    } 

чувство, будто я что-то очень простое ... отсутствующий будем рады любые идеи, как решить этот персонал!

ответ

1

Ваш адаптер должен осуществить getViewTypeCount() (и вернуть 2 в вашем случае), а также осуществить getItemViewType(). Реализация по умолчанию не знала о ваших данных и не будет пытаться понять это. Он просто обработает случай, когда используется только один тип вида (следовательно, возвращается 0). Добавьте отсутствующие методы, и вы должны быть хорошими.

+0

Спасибо :) это была довольно глупая ошибка ... –

 Смежные вопросы

  • Нет связанных вопросов^_^