1

Мне нужно загрузить данные из курсора в список в моем приложении. Вот мой пользовательский класс адаптера. И он отлично работает. Но мне нужно показать отдельный макет для первой строки списка. Первая строка в списке будет иметь дополнительное изображение. Как я могу это сделать? Пожалуйста, помогите мне. Заранее спасибо.Настройка SimpleCursorAdaper в android

public class CustomSCAdapter extends SimpleCursorAdapter { 
Cursor c; 
Context context; 
Activity activity; 
int layout; 

public CustomSCAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { 
    super(context, layout, c, from, to, flags); 
    this.c = c; 
    this.context=context; 
    this.activity=(Activity) context; 
    this.layout = layout; 

} 

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    final View view = LayoutInflater.from(context).inflate(this.layout, parent, false); 
    return view; 
} 

@Override 
public void bindView(View view, Context context, Cursor cursor) { 
     //here finding all my views in row from view object and binding data from cursor as per my requirement. 
    } 

} 

EDIT: На самом деле i'am передавая нуль для переменного курсора для конструктора класса адаптера как i'am с использованием механизма погрузчиков в моем фрагменте.

getLoaderManager().initLoader(0, null, this); 
    adapter = new CustomSCAdapter(getActivity(), R.layout.row_layout, null, from, to, 0); 
+0

не отменяет NewView. Нет нужды. (означает, что вам не нужно сохранять ссылку на макет, активность, контекст и курсор. SimpleCursorAdapter делает все, что для вас). в bindView, cursor.getPosition() дает вам позицию. если он равен 0, отобразите изображение, а затем скройте его. – njzk2

+0

, но если я прокручу вниз по списку, getposition() снова возвращает 0 – Santhosh

+0

getPosition возвращает 0, когда адаптер курсора связывает первый элемент курсора. как указал Начи, «Первое работает и хорошо, а красивее». – njzk2

ответ

0

Проще всего было бы рассматривать первый элемент в качестве заголовка к списку как описано in this answer.

подход проще (но уродливее) был бы поместить эти положения в своей newView и bindView методе:

if (cursor.isFirst()) { 
// inflate a different layout containing the imageview or populate the imageview 
} else { 
// add logic for other rows here 
} 
+1

Я не уверен в поведении просмотра списка, если вы раздуваете 2 разных макета, так как переработка обрабатывается в simplecursoradapter. Я бы сказал, вам нужно переопределить getItemViewType, а также сказать simplecursoradapter 2 используются разные макеты. – njzk2

+0

Я не могу использовать переменную курсора экземпляра, так как ее значение всегда равно null (вопрос обновляется), и если я использую метод isFirst для параметра cursorView метода bindView для идентификации первого элемента, он возвращает true для нескольких строк при каждом прокрутке вниз по мере привязки адаптера данные только для видимых видов. – Santhosh

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

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