package com.nononsenseapps.notepad.ui.list;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.databinding.DataBindingUtil;
import android.preference.PreferenceManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.nononsenseapps.notepad.R;
import com.nononsenseapps.notepad.databinding.TasklistHeaderBinding;
import com.nononsenseapps.notepad.databinding.TasklistItemRichBinding;
class SimpleSectionsAdapter extends RecyclerView.Adapter<ViewHolder> {
final static int itemType = 0;
final static int headerType = 1;
private static final String TAG = "SimpleSectionsAdapter";
private TaskListFragment taskListFragment;
final SharedPreferences prefs;
final Context context;
Cursor cursor = null;
public SimpleSectionsAdapter(TaskListFragment taskListFragment, Context context) {
super();
this.taskListFragment = taskListFragment;
setHasStableIds(true);
this.context = context;
prefs = PreferenceManager.getDefaultSharedPreferences(context);
}
@Override
public ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
switch (viewType) {
case headerType:
return new HeaderViewHolder(taskListFragment, (TasklistHeaderBinding) DataBindingUtil.inflate(LayoutInflater.from(context),
R.layout.tasklist_header, parent, false));
case itemType:
default:
return new ItemViewHolder(taskListFragment,
(TasklistItemRichBinding) DataBindingUtil.inflate(LayoutInflater.from(context),
R.layout.tasklist_item_rich, parent, false), taskListFragment.getListId());
}
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
if (!cursor.moveToPosition(position)) {
return;
}
holder.onBind(cursor);
}
@Override
public int getItemViewType(final int position) {
// If the id is invalid, it's a header
if (getItemId(position) < 1) {
return headerType;
} else {
return itemType;
}
}
@Override
public long getItemId(int position) {
cursor.moveToPosition(position);
return cursor.getLong(0);
}
@Override
public int getItemCount() {
if (cursor == null) {
return 0;
} else {
return cursor.getCount();
}
}
public void swapCursor(final Cursor cursor) {
this.cursor = cursor;
notifyDataSetChanged();
}
public Cursor getCursor(final int position) {
if (cursor != null) {
cursor.moveToPosition(position);
}
return cursor;
}
}