Date を SectionHeader として ListView を表示したい。
私が持っているもの: カスタムSimpleCursorAdapterを使用して、sqliteデータベースからListViewを表示しています。
私のカスタム SimpleCursorAdapter は次のとおりです。
public class DomainAdapter extends SimpleCursorAdapter{
private Cursor dataCursor;
private LayoutInflater mInflater;
public DomainAdapter(Context context, int layout, Cursor dataCursor, String[] from,
        int[] to) {
    super(context, layout, dataCursor, from, to);
        this.dataCursor = dataCursor;
        mInflater = LayoutInflater.from(context);
}
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.todo_row, null);
        holder = new ViewHolder();
        holder.text1 = (TextView) convertView.findViewById(R.id.label);//Task Title
        holder.text2 = (TextView) convertView.findViewById(R.id.label2);//Task Date
        holder.img =   (ImageView) convertView.findViewById(R.id.task_icon);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    dataCursor.moveToPosition(position);
    int title = dataCursor.getColumnIndex("title"); 
    String task_title = dataCursor.getString(title);
    int title_date = dataCursor.getColumnIndex("day"); 
    String task_day = dataCursor.getString(title_date);
    int description_index = dataCursor.getColumnIndex("priority"); 
    int priority = dataCursor.getInt(description_index);
    holder.text1.setText(task_title);
    holder.text2.setText(task_day);
    if(priority==1) holder.img.setImageResource(R.drawable.redbutton);
    else if(priority==2) holder.img.setImageResource(R.drawable.bluebutton);
    else if(priority==3)holder.img.setImageResource(R.drawable.greenbutton);
    else holder.img.setImageResource(R.drawable.redbuttonchecked);
    return convertView;
}
static class ViewHolder {
    TextView text1;
    TextView text2;
    ImageView img;
}
}
これまでの Google 検索結果 :
問題 :セクション ヘッダーとして日付を含むリストビューを表示したい。もちろん、日付の値は sqlite データベースから取得されます。
誰でもこのタスクを達成する方法を教えてください。
または、これに関連するサンプル コードまたは正確な (類似の) コードを提供してください。
Graham Borald's Answer に従って編集(これは正常に動作しますが、迅速な修正でした。)
public class DomainAdapter extends SimpleCursorAdapter{
    private Cursor dataCursor;
    private LayoutInflater mInflater;
    public DomainAdapter(Context context, int layout, Cursor dataCursor, String[] from,
            int[] to) {
        super(context, layout, dataCursor, from, to);
            this.dataCursor = dataCursor;
            mInflater = LayoutInflater.from(context);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) 
        {
            convertView = mInflater.inflate(R.layout.tasks_row, null);
            holder = new ViewHolder();
            holder.text1 = (TextView) convertView.findViewById(R.id.label);//Task Title
            holder.text2 = (TextView) convertView.findViewById(R.id.label2);//Task Date
            holder.img =   (ImageView) convertView.findViewById(R.id.taskImage);
            holder.sec_hr=(TextView) convertView.findViewById(R.id.sec_header);
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }
        dataCursor.moveToPosition(position);
        int title = dataCursor.getColumnIndex("title"); 
        String task_title = dataCursor.getString(title);
        int title_date = dataCursor.getColumnIndex("due_date"); 
        String task_day = dataCursor.getString(title_date);
        int description_index = dataCursor.getColumnIndex("priority"); 
        int priority = dataCursor.getInt(description_index);
        String prevDate = null;
        if (dataCursor.getPosition() > 0 && dataCursor.moveToPrevious()) {
            prevDate = dataCursor.getString(title_date);
            dataCursor.moveToNext();
        }
        if(task_day.equals(prevDate))
        {
            holder.sec_hr.setVisibility(View.GONE);
        }
        else
        {
            holder.sec_hr.setText(task_day);
            holder.sec_hr.setVisibility(View.VISIBLE);
        }
        holder.text1.setText(task_title);
        holder.text2.setText(task_day);
        if(priority==1) holder.img.setImageResource(R.drawable.redbutton);
        else if(priority==2) holder.img.setImageResource(R.drawable.bluebutton);
        else if(priority==3)holder.img.setImageResource(R.drawable.greenbutton);
        else holder.img.setImageResource(R.drawable.redbuttonchecked);
        return convertView;
    }
    static class ViewHolder {
        TextView text1;
        TextView text2;
        TextView sec_hr;
        ImageView img;
    }
}
CommonsWareの回答に従って編集
public class DomainAdapter extends SimpleCursorAdapter{
        private Cursor dataCursor;
        private TodoDbAdapter adapter;
        private LayoutInflater mInflater;
        boolean header;
      String last_day;
      public DomainAdapter(Context context, int layout, Cursor dataCursor, String[] from,
        int[] to) {
        super(context, layout, dataCursor, from, to);
        this.dataCursor = dataCursor;
        mInflater = LayoutInflater.from(context);
        header=true;
        adapter=new TodoDbAdapter(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    TitleHolder title_holder = null;
    if(getItemViewType(position)==1)
    {
        //convertView= mInflater.inflate(R.layout.todo_row, parent, false);
        if (convertView == null) 
        {
            convertView = mInflater.inflate(R.layout.todo_row, null);
            holder = new ViewHolder();
            holder.text1 = (TextView) convertView.findViewById(R.id.label);//Task Title
            holder.text2 = (TextView) convertView.findViewById(R.id.label2);//Task Date
            holder.img =   (ImageView) convertView.findViewById(R.id.task_icon);
            convertView.setTag(holder);
        }
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }
        dataCursor.moveToPosition(position);
        int title = dataCursor.getColumnIndex("title"); 
        String task_title = dataCursor.getString(title);
        int title_date = dataCursor.getColumnIndex("day"); 
        String task_day = dataCursor.getString(title_date);
        int description_index = dataCursor.getColumnIndex("priority"); 
        int priority = dataCursor.getInt(description_index);
        holder.text1.setText(task_title);
        holder.text2.setText(task_day);
        if(priority==1) holder.img.setImageResource(R.drawable.redbutton);
        else if(priority==2) holder.img.setImageResource(R.drawable.bluebutton);
        else if(priority==3)holder.img.setImageResource(R.drawable.greenbutton);
        else holder.img.setImageResource(R.drawable.redbuttonchecked);
    }
    else
    {
        if (convertView == null) 
        {
            convertView = mInflater.inflate(R.layout.section_header, null);
            title_holder = new TitleHolder();
            title_holder.datee = (TextView) convertView.findViewById(R.id.sec_header);//Task Title
            convertView.setTag(title_holder);
        }
        else 
        {
            title_holder = (TitleHolder) convertView.getTag();
        }
        dataCursor.moveToPosition(position);
        int title_date = dataCursor.getColumnIndex("day"); 
        String task_day = dataCursor.getString(title_date);
        title_holder.datee.setText(task_day);
    }
    return convertView;
}
static class ViewHolder {
    TextView text1;
    TextView text2;
    ImageView img;
}
 static class TitleHolder{
    TextView datee;
}
@Override
public int getCount() {
    return dataCursor.getCount()+1; //just for testing i took no. of headers=1
}
@Override
public int getViewTypeCount() {
    return 2;
}
@Override
public int getItemViewType(int position) {
    dataCursor.moveToPosition(position);
    **Long id=dataCursor.getLong(position);**
    Cursor date=adapter.fetchTodo(id);
    int title_date = date.getColumnIndex("day"); 
        String task_day = date.getString(title_date);
        Log.i("tag",task_day);
    if(last_day.equals(task_day))
        return 1;//Display Actual Row
    else
    {
        last_day=task_day;//Displaying Header
        return 0;
    }
}
/*
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    final View view;
    if(getItemViewType(cursor.getPosition())==1)
        view= mInflater.inflate(R.layout.todo_row, parent, false);
    else
        view=mInflater.inflate(R.layout.section_header,parent, false);
    return view;
}
@Override
public void bindView(View convertView, Context context, Cursor cursor) {
    long id = cursor.getPosition();
}*/
}
行でNull Pointer Exceptionが発生しています: Cursor date=adapter.fetchTodo(id);
Cursor がデータを取得していないようです。