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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions