Skip to content

ListView not scrolling #40

@pmessina

Description

@pmessina

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);
    }
}

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions