Suche in einer bereits mit Daten aus DB gefüllten ListActivity

  • Antworten:2
Marco O.
  • Forum-Beiträge: 2

30.03.2011, 18:52:50 via Website

Hallo,

ich habe eine ListActivity. Diese wird mit Daten aus der SQLite Datenbank gefüllt. Hierbei wird der SimpleCursorAdapter als listAdapter gesetzt.
Dieser Activity ist es auch erlaubt zu suchen. Dabei wird in der Datenbank gesucht. Die Suche soweit funktioniert, nur werden mir die Suchergebnisse nicht angezeigt, sondern ich bekomme eine NullPointerException geworfen.

103-30 16:29:43.381: ERROR/AndroidRuntime(546): java.lang.RuntimeException: Unable to start activity ComponentInfo{package/package.MagazineViewController}: java.lang.NullPointerException
203-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
303-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
403-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
503-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
603-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.os.Handler.dispatchMessage(Handler.java:99)
703-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.os.Looper.loop(Looper.java:123)
803-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.app.ActivityThread.main(ActivityThread.java:4627)
903-30 16:29:43.381: ERROR/AndroidRuntime(546): at java.lang.reflect.Method.invokeNative(Native Method)
1003-30 16:29:43.381: ERROR/AndroidRuntime(546): at java.lang.reflect.Method.invoke(Method.java:521)
1103-30 16:29:43.381: ERROR/AndroidRuntime(546): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
1203-30 16:29:43.381: ERROR/AndroidRuntime(546): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1303-30 16:29:43.381: ERROR/AndroidRuntime(546): at dalvik.system.NativeStart.main(Native Method)
14
1503-30 16:29:43.381: ERROR/AndroidRuntime(546): Caused by: java.lang.NullPointerException
1603-30 16:29:43.381: ERROR/AndroidRuntime(546): at package.MagazineViewController.doSearch(MagazineViewController.java:111)
1703-30 16:29:43.381: ERROR/AndroidRuntime(546): at package.MagazineViewController.onCreate(MagazineViewController.java:40)
1803-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
1903-30 16:29:43.381: ERROR/AndroidRuntime(546): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
2003-30 16:29:43.381: ERROR/AndroidRuntime(546): ... 11 more


1public class MagazineViewController extends ListActivity {
2
3DatabaseHelper dbHelper;
4SimpleCursorAdapter adapter = null;
5Cursor c;
6
7@Override
8public void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10
11 requestWindowFeature(Window.FEATURE_NO_TITLE);
12
13 final Intent queryIntent = getIntent();
14 final String queryAction = queryIntent.getAction();
15 if (Intent.ACTION_SEARCH.equals(queryAction)) {
16 String searchKeywords = queryIntent.getStringExtra(SearchManager.QUERY);
17 doSearch(searchKeywords);
18 }
19
20 dbHelper=new DatabaseHelper(this);
21
22 c = dbHelper.getAllMagazines();
23 startManagingCursor(c);
24
25 Log.d("CURSOR COUNT", ""+c.getCount());
26
27 adapter = new SimpleCursorAdapter(this,
28 android.R.layout.simple_list_item_2, c,
29 new String[] {"editionName", "magazineName"},
30 new int[] {android.R.id.text1, android.R.id.text2});
31
32 this.setListAdapter(adapter);
33}
34
35private void doSearch(String search) {
36 dbHelper=new DatabaseHelper(this);
37
38 Cursor cur = dbHelper.searchEditions(search);
39 startManagingCursor(cur);
40
41 Log.d("CURSOR2 COUNT", ""+cur.getCount());
42
43 adapter.changeCursor(cur);
44}

Die Exception wird in dieser Zeile geworfen: (im Quelltext wurden unwichtige Methoden wie Opzionsmenü weggelassen)
1adapter.changeCursor(cur);

Der CursorCount ist > 0.
Jemand ne Idee an was das liegen könnte?

Antworten
Gelöschter Account
  • Forum-Beiträge: 107

30.03.2011, 21:40:01 via Website

Du solltest sicherstellen, dass adapter vor doSearch() initialisiert ist. ;)

Seid nett zueinander: AndroidPIT-Regeln ;)

Antworten
Marco O.
  • Forum-Beiträge: 2

30.03.2011, 21:52:46 via Website

Boah ne oder :D

Bin den ganzen Mittag schon am verzweifeln. Hatte es auch in onCreate() reingetan, aber nach der doSearch().
So funktioniert es jetzt.

Vielen Dank!

Antworten