Bad request for field

  • Antworten:0
  • Bentwortet
Sebastian Klaiber
  • Forum-Beiträge: 44

02.02.2011, 14:20:52 via Website

Hi,

ich habe einen ExpandableListAdapter bei der Liste werden alle Kategorien angezeigt aber wenn ich die 3te Kategorie und die danach folgenden öffnen will zeigt er mir die Items nicht mehr an und gibt mir folgenden Error in Logcat aus. Kann das damit zu tun haben das die Cursor nicht richtig geschlossen werden? An was kann das noch liegen? Der Code vom Adapter ist unten!

Danke!

102-02 14:08:44.665: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
202-02 14:08:44.815: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
302-02 14:08:44.825: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
402-02 14:08:45.515: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
502-02 14:08:45.675: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
602-02 14:08:45.675: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
702-02 14:08:45.684: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
802-02 14:08:45.684: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2
902-02 14:08:45.705: ERROR/CursorWindow(851): Bad request for field slot 2,2. numRows = 3, numColumns = 2

1public class CategoriesAdapter extends BaseExpandableListAdapter {
2 private Context mContext;
3 private LayoutInflater mInflater;
4
5 private SQLiteDatabase mDb;
6
7 private Cursor mCategoriesCursor;
8 private Cursor mItemsCursor;
9
10 public CategoriesAdapter(Context context, SQLiteDatabase db, Cursor categoriesCursor) {
11 mContext = context;
12 mDb = db;
13 mCategoriesCursor = categoriesCursor;
14 mInflater = LayoutInflater.from(mContext);
15 }
16
17 @Override
18 public int getGroupCount() {
19 return mCategoriesCursor.getCount();
20 }
21
22 @Override
23 public int getChildrenCount(int groupPosition) {
24 Cursor itemsCursor = Item.findAllByCategoryId(mDb, getGroupId(groupPosition));
25 int count = itemsCursor.getCount();
26 return count;
27 }
28
29 @Override
30 public Object getGroup(int groupPosition) {
31 mCategoriesCursor.moveToPosition(groupPosition);
32 if (mCategoriesCursor.getCount() > 0){
33 return mCategoriesCursor;
34 }
35 mCategoriesCursor.close();
36 return null;
37 }
38
39 @Override
40 public Object getChild(int groupPosition, int childPosition) {
41 mItemsCursor = Item.findAllByCategoryId(mDb, getGroupId(groupPosition));
42 mItemsCursor.moveToPosition(childPosition);
43 if (mItemsCursor.getCount() > 0){
44 return mItemsCursor;
45 }
46 mItemsCursor.close();
47 return null;
48 }
49
50 @Override
51 public long getGroupId(int groupPosition) {
52 Cursor categoriesCursor = (Cursor) getGroup(groupPosition);
53 if (categoriesCursor.getCount() > 0 && !categoriesCursor.isNull(groupPosition)) {
54 return categoriesCursor.getInt(categoriesCursor.getColumnIndexOrThrow(Category.ID));
55
56 }
57 return 0;
58 }
59
60 @Override
61 public long getChildId(int groupPosition, int childPosition) {
62 Cursor itemsCursor = (Cursor) getChild(groupPosition, childPosition);
63 Log.v("CategoriesCursor", new Integer(itemsCursor.getCount()).toString());
64 if (itemsCursor.getCount() > 0){
65 int id = itemsCursor.getInt(itemsCursor.getColumnIndexOrThrow(Item.ID));
66
67 return id;
68 }
69 itemsCursor.close();
70 return 0;
71 }
72
73 @Override
74 public boolean hasStableIds() {
75 return true;
76 }
77
78 @Override
79 public View getGroupView(int groupPosition, boolean isExpanded,
80 View convertView, ViewGroup parent) {
81 Cursor categoriesCursor = (Cursor) getGroup(groupPosition);
82 ViewHolder holder;
83 if (convertView == null && categoriesCursor != null) {
84 convertView = mInflater.inflate(R.layout.group_row, null);
85
86 holder = new ViewHolder();
87 holder.textViewGroup = (TextView) convertView.findViewById(R.id.group_text);
88 convertView.setTag(holder);
89 } else {
90 holder = (ViewHolder) convertView.getTag();
91 }
92 if (categoriesCursor != null) {
93 holder.textViewGroup.setText(categoriesCursor
94 .getString(mCategoriesCursor
95 .getColumnIndexOrThrow(Category.NAME)));
96 }
97 return convertView;
98 }
99
100 @Override
101 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
102 ViewHolder holder;
103 Cursor itemsCursor = (Cursor) getChild(groupPosition, childPosition);
104 if (convertView == null) {
105 convertView = mInflater.inflate(R.layout.child_row, null);
106 holder = new ViewHolder();
107 holder.textViewChild = (TextView) convertView.findViewById(R.id.child_text);
108 holder.textViewAmount = (TextView) convertView.findViewById(R.id.child_amount);
109 convertView.setTag(holder);
110 } else {
111 holder = (ViewHolder) convertView.getTag();
112 }
113
114 holder.textViewChild.setText(itemsCursor.getString(itemsCursor.getColumnIndexOrThrow(Item.NAME)));
115 holder.textViewAmount.setText(itemsCursor.getString(itemsCursor.getColumnIndexOrThrow(Item.AMOUNT)));
116 int status = itemsCursor.getInt(itemsCursor.getColumnIndexOrThrow(Item.STATUS));
117
118 if (status == 1) {
119 holder.textViewChild.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
120 }
121 itemsCursor.close();
122 return convertView;
123 }
124
125 @Override
126 public boolean isChildSelectable(int groupPosition, int childPosition) {
127 return true;
128 }
129
130 static class ViewHolder {
131 TextView textViewGroup;
132 TextView textViewChild;
133 TextView textViewAmount;
134 }
135
136}

— geändert am 02.02.2011, 14:21:14

Antworten