-
Notifications
You must be signed in to change notification settings - Fork 17
Description
I am working with version 2 of your SectionCursorAdapter library, and I'm having trouble with my listView not scrolling. I ran your sample and it scrolls fine. I reverted back to version 1 of your library, but I have the same issues. The views inflate fine, and I'm retrieving the right amount of cursors. Here's my implementation:
package com.pirateman.recruitercallsinterviews;
import android.annotation.TargetApi;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.CalendarContract;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.pirateman.recruitercallsactivity.R;
import com.twotoasters.sectioncursoradapter.adapter.SectionCursorAdapter;
import com.twotoasters.sectioncursoradapter.adapter.viewholder.ViewHolder;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
@TargetApi(value=21)
public class InterviewsCursorAdapter extends SectionCursorAdapter<String, InterviewsCursorAdapter.InterviewDateViewHolder, InterviewsCursorAdapter.InterviewViewHolder>
{
private static Uri calendarUri = CalendarContract.Events.CONTENT_URI;
private static String calDisplayName = CalendarContract.Events.CALENDAR_DISPLAY_NAME;
private static String eventID = CalendarContract.Events._ID;
private static String eventStartCol = CalendarContract.Events.DTSTART;
private static String eventEndCol = CalendarContract.Events.DTEND;
private static String eventTitle = CalendarContract.Events.TITLE;
private static String eventDescription = CalendarContract.Events.DESCRIPTION;
private static String eventTimeZone = CalendarContract.Events.EVENT_TIMEZONE;
private static String eventAllDay = CalendarContract.Events.ALL_DAY;
public InterviewsCursorAdapter(Context context, Cursor cursor)
{
super(context, cursor, 0, R.layout.interviews_date_tv_separator, R.layout.interviews_lv_row_layout);
}
@Override
protected String getSectionFromCursor(Cursor cursor)
{
DateTimeFormatter dateFormatter = DateTimeFormat.longDate();
String eventStart = cursor.getString(cursor.getColumnIndex(eventStartCol));
return dateFormatter.print(Long.parseLong(eventStart));
}
@Override
protected InterviewDateViewHolder createSectionViewHolder(View sectionView, String section)
{
return new InterviewDateViewHolder(sectionView);
}
@Override
protected void bindSectionViewHolder(int position, InterviewDateViewHolder sectionViewHolder, ViewGroup parent, String section)
{
sectionViewHolder.interviewDate.setOnClickListener(null);
sectionViewHolder.interviewDate.setText(section);
}
@Override
protected InterviewViewHolder createItemViewHolder(Cursor cursor, View itemView)
{
return new InterviewViewHolder(itemView);
}
@Override
protected void bindItemViewHolder(InterviewViewHolder itemViewHolder, Cursor cursor, ViewGroup parent)
{
if (itemViewHolder.interviewType != null && itemViewHolder.timeStart != null && itemViewHolder.timeEnd != null)
{
String eventStart = cursor.getString(cursor.getColumnIndex(eventStartCol));
String eventEnd = cursor.getString(cursor.getColumnIndex(eventEndCol));
String eventTitleName = cursor.getString(cursor.getColumnIndex(eventTitle));
DateTimeFormatter timeFormatter = DateTimeFormat.shortTime();
DateTime startTimeDT = new DateTime(Long.parseLong(eventStart));
DateTime endTimeDT = new DateTime(Long.parseLong(eventEnd));
String eventStartTF = timeFormatter.print(startTimeDT);
String eventEndTF = timeFormatter.print(endTimeDT);
itemViewHolder.timeStart.setText(eventStartTF);
itemViewHolder.timeEnd.setText(eventEndTF);
itemViewHolder.interviewType.setText(eventTitleName);
}
}
@Deprecated
protected View newSectionView(Context context, Object o, ViewGroup parent)
{
return LayoutInflater.from(context).inflate(R.layout.interviews_date_tv_separator, parent, false);
}
@Deprecated
protected void bindSectionView(View view, Context context, int i, Object o)
{
TextView interviewDate = (TextView) view.findViewById(R.id.tvInterviewDate);
interviewDate.setOnClickListener(null);
interviewDate.setText(o.toString());
}
@Deprecated
protected View newItemView(Context context, Cursor cursor, ViewGroup parent)
{
return LayoutInflater.from(context).inflate(R.layout.interviews_lv_row_layout, parent, false);
}
@Deprecated
protected void bindItemView(View view, Context context, Cursor cursor)
{
TextView interviewType = (TextView)view.findViewById(R.id.tvInterviewType);
TextView timeStart = (TextView)view.findViewById(R.id.tvStartTime);
TextView timeEnd = (TextView)view.findViewById(R.id.tvEndTime);
if (interviewType != null && timeStart != null && timeEnd != null)
{
String eventStart = cursor.getString(cursor.getColumnIndex(eventStartCol));
String eventEnd = cursor.getString(cursor.getColumnIndex(eventEndCol));
String eventTitleName = cursor.getString(cursor.getColumnIndex(eventTitle));
DateTimeFormatter timeFormatter = DateTimeFormat.shortTime();
DateTime startTimeDT = new DateTime(Long.parseLong(eventStart));
DateTime endTimeDT = new DateTime(Long.parseLong(eventEnd));
String eventStartTF = timeFormatter.print(startTimeDT);
String eventEndTF = timeFormatter.print(endTimeDT);
timeStart.setText(eventStartTF);
timeEnd.setText(eventEndTF);
interviewType.setText(eventTitleName);
}
}
public class InterviewViewHolder extends ViewHolder
{
public final TextView interviewType;
public final TextView timeStart;
public final TextView timeEnd;
public InterviewViewHolder(View rootView)
{
super(rootView);
interviewType = findWidgetById(R.id.tvInterviewType);
timeStart= findWidgetById(R.id.tvStartTime);
timeEnd = findWidgetById(R.id.tvEndTime);
}
}
public class InterviewDateViewHolder extends ViewHolder
{
public final TextView interviewDate;
public InterviewDateViewHolder(View rootView)
{
super(rootView);
interviewDate = findWidgetById(R.id.tvInterviewDate);
}
}
}