P
Prengepower
Ambitioniertes Mitglied
- 0
Hallo!
Ich wollte mir einen eigenen Adapter basteln, der mir alle meine Datensätze aus einer Datenbank anzeigt und falls das Datum zwischen 2 Einträgen nicht unterschiedliche ist, soll er eine Trennlinie mit dem Datum einfügen.
Hier mein Code:
Er wirft keinen Fehler - aber meine Liste bleibt einfach leer O_o Hat einer eine Idee woran das liegt?
Danke
Gruß!
Ich wollte mir einen eigenen Adapter basteln, der mir alle meine Datensätze aus einer Datenbank anzeigt und falls das Datum zwischen 2 Einträgen nicht unterschiedliche ist, soll er eine Trennlinie mit dem Datum einfügen.
Hier mein Code:
Code:
private class SubjectAdapter extends BaseAdapter{
private static final int TYPE_ITEM = 0;
private static final int TYPE_SEPARATOR = 1;
private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;
private ArrayList<ArrayList<String>> mData = new ArrayList<ArrayList<String>>();
private ArrayList<String> mSubject = new ArrayList<String>();
private LayoutInflater mInflater;
private TreeSet mSeparatorsSet = new TreeSet();
public SubjectAdapter(Cursor cursor) {
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
startManagingCursor(cursor);
String date = "";
if (cursor.moveToFirst()){
do{
mSubject.add(1, cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.KEY_TITLE)));
mSubject.add(2, cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.KEY_ROOM)));
mSubject.add(3, cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.KEY_DATESTRING)));
String actualDate = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.KEY_DATESTRING));
addItem(mSubject);
if (!actualDate.equals(date)){
ArrayList<String> mDate = new ArrayList<String>();
mDate.add(1, actualDate);
addSeparatorItem(mDate);
}
date = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.KEY_DATESTRING));
mSubject.clear();
}while(cursor.moveToNext());
}
}
public void addItem(final ArrayList<String> item) {
mData.add(item);
notifyDataSetChanged();
}
public void addSeparatorItem(final ArrayList<String> item) {
mData.add(item);
// save separator position
mSeparatorsSet.add(mData.size() - 1);
notifyDataSetChanged();
}
@Override
public int getItemViewType(int position) {
return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;
}
@Override
public int getViewTypeCount() {
return TYPE_MAX_COUNT;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public ArrayList<String> getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case TYPE_ITEM:
convertView = mInflater.inflate(R.layout.subject_row, null);
holder.titleView = (TextView)convertView.findViewById(R.id.title);
holder.dateView = (TextView)convertView.findViewById(R.id.time);
holder.roomView = (TextView)convertView.findViewById(R.id.lecturer);
break;
case TYPE_SEPARATOR:
convertView = mInflater.inflate(R.layout.subject_seperator, null);
holder.seperatorView = (TextView)convertView.findViewById(R.id.seperator);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
Log.i("Syso", "Subjectgröße"+mData.size());
Log.i("Syso", "Position"+position);
Log.i("Syso", "Subjectgröße"+mData.get(1).size());
holder.titleView.setText(mData.get(position+1).get(1));
holder.roomView.setText(mData.get(position+1).get(2));
holder.dateView.setText(mData.get(position+1).get(3));
holder.seperatorView.setText(mData.get(position+2).get(1));
return convertView;
}
}
public static class ViewHolder{
public TextView titleView;
public TextView dateView;
public TextView roomView;
public TextView seperatorView;
}
Er wirft keinen Fehler - aber meine Liste bleibt einfach leer O_o Hat einer eine Idee woran das liegt?
Danke
Gruß!