package com.kuxhausen.huemore;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.ResourceCursorAdapter;
import android.view.View;
import android.widget.TextView;
import com.kuxhausen.huemore.state.DatabaseGroup;
import java.util.ArrayList;
public class DatabaseGroupsAdapter extends ResourceCursorAdapter {
private ArrayList<DatabaseGroup> mList = new ArrayList<DatabaseGroup>();
public DatabaseGroupsAdapter(Context context, int layout, Cursor c, int flags) {
super(context, layout, c, flags);
}
public DatabaseGroup getRow(int position) {
return mList.get(position);
}
@Override
public int getCount() {
return mList.size();
}
@Override
/**
* Cursor expected to match DatabaseGroup.GROUP_QUERY_COLUMNS
*/
public void changeCursor(Cursor cursor) {
super.changeCursor(cursor);
mList.clear();
if (cursor != null) {
cursor.moveToPosition(-1); // not the same as move to first!
while (cursor.moveToNext()) {
mList.add(new DatabaseGroup(cursor, this.mContext));
}
cursor.moveToFirst();
notifyDataSetChanged();
}
}
@Override
public void bindView(View rowView, Context context, Cursor cursor) {
ViewHolder viewHolder;
if (rowView.getTag() == null) {
viewHolder = new ViewHolder();
viewHolder.groupName = (TextView) rowView.findViewById(android.R.id.text1);
viewHolder.star = rowView.findViewById(android.R.id.text2);
// Hold the view objects in an object, that way the don't need to be "re-found"
rowView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) rowView.getTag();
}
/** Set data to your Views. */
DatabaseGroup item = mList.get(cursor.getPosition());
if (!viewHolder.groupName.getText().equals(item.getName())) {
viewHolder.groupName.setText(item.getName());
}
if (item.isStared()) {
viewHolder.star.setVisibility(View.VISIBLE);
} else {
viewHolder.star.setVisibility(View.INVISIBLE);
}
}
protected static class ViewHolder {
protected TextView groupName;
protected View star;
}
}