ListView - java.io.IOException: Is a directory

  • Antworten:5
  • Bentwortet
Martin Grulich
  • Forum-Beiträge: 56

12.04.2011, 18:30:05 via Website

Hi Leute,

ich bin am verzweifeln.
Erst einmal kurz zu der Umgebung:

Ich deklariere folgendes am Anfang der Klasse:
1private ArrayList myListing = new ArrayList();
2private SimpleAdapter reportListAdapter;

Im onCreate kommt dann unter anderem folgendes vor:
1reportListAdapter = new SimpleAdapter(
2 this,
3 myListing,
4 R.layout.reportlist_item,
5 new String[] {
6 "title",
7 "datetime",
8 "state_read",
9 "state_loaded",
10 "state_favorite"},
11 new int[] {
12 R.id.title,
13 R.id.datetime,
14 R.id.state_read,
15 R.id.state_loaded,
16 R.id.state_favorite}
17 );
18 setListAdapter(reportListAdapter);
19 setContentView(R.layout.reportslist);

Und zu guter letzt um die Daten in die ListView zu schreiben mache ich folgendes in einer Schleife:
1HashMap item = new HashMap();
2 item.put("title", title);
3 item.put("datetime", datetime);
4 if(read){
5 item.put("state_read", R.drawable.news_read);
6 } else {
7 item.put("state_read", R.drawable.news_unread);
8 }
9 if(loaded){
10 item.put("state_loaded", R.drawable.report_complete);
11 } else {
12 item.put("state_loaded", R.drawable.report_base);
13 }
14 if(favorite){
15 item.put("state_favorite", R.drawable.report_favorite);
16 }
17
18 myListing.add(item);

Das Resultat im LogCat, sieht aber dummerweise folgendermaaßen aus (Wenn ich myListing.add(item); auskommentiere nicht):

Kann mir einer sagen, warum das so ist und vielleicht was da schief läuft, ich verstehe es nämlich nicht.

104-12 18:21:10.740: DEBUG/skia(2664): ---- read threw an exception
204-12 18:21:10.740: WARN/System.err(2664): java.io.IOException: Is a directory
304-12 18:21:10.740: WARN/System.err(2664): at org.apache.harmony.luni.platform.OSFileSystem.read(Native Method)
404-12 18:21:10.740: WARN/System.err(2664): at dalvik.system.BlockGuard$WrappedFileSystem.read(BlockGuard.java:165)
504-12 18:21:10.740: WARN/System.err(2664): at java.io.FileInputStream.read(FileInputStream.java:290)
604-12 18:21:10.750: WARN/System.err(2664): at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:166)
704-12 18:21:10.750: WARN/System.err(2664): at java.io.BufferedInputStream.read(BufferedInputStream.java:324)
804-12 18:21:10.750: WARN/System.err(2664): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
904-12 18:21:10.750: WARN/System.err(2664): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:470)
1004-12 18:21:10.750: WARN/System.err(2664): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:284)
1104-12 18:21:10.750: WARN/System.err(2664): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:309)
1204-12 18:21:10.750: WARN/System.err(2664): at android.graphics.drawable.Drawable.createFromPath(Drawable.java:800)
1304-12 18:21:10.760: WARN/System.err(2664): at android.widget.ImageView.resolveUri(ImageView.java:528)
1404-12 18:21:10.760: WARN/System.err(2664): at android.widget.ImageView.setImageURI(ImageView.java:305)
1504-12 18:21:10.760: WARN/System.err(2664): at android.widget.SimpleAdapter.setViewImage(SimpleAdapter.java:264)
1604-12 18:21:10.760: WARN/System.err(2664): at android.widget.SimpleAdapter.bindView(SimpleAdapter.java:192)
1704-12 18:21:10.760: WARN/System.err(2664): at android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:126)
1804-12 18:21:10.760: WARN/System.err(2664): at android.widget.SimpleAdapter.getView(SimpleAdapter.java:114)
1904-12 18:21:10.770: WARN/System.err(2664): at android.widget.AbsListView.obtainView(AbsListView.java:1446)
2004-12 18:21:10.770: WARN/System.err(2664): at android.widget.ListView.makeAndAddView(ListView.java:1745)
2104-12 18:21:10.770: WARN/System.err(2664): at android.widget.ListView.fillDown(ListView.java:670)
2204-12 18:21:10.770: WARN/System.err(2664): at android.widget.ListView.fillSpecific(ListView.java:1302)
2304-12 18:21:10.770: WARN/System.err(2664): at android.widget.ListView.layoutChildren(ListView.java:1576)
2404-12 18:21:10.770: WARN/System.err(2664): at android.widget.AbsListView.onLayout(AbsListView.java:1273)
2504-12 18:21:10.770: WARN/System.err(2664): at android.view.View.layout(View.java:7192)
2604-12 18:21:10.770: WARN/System.err(2664): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
2704-12 18:21:10.780: WARN/System.err(2664): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
2804-12 18:21:10.780: WARN/System.err(2664): at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
2904-12 18:21:10.780: WARN/System.err(2664): at android.view.View.layout(View.java:7192)
3004-12 18:21:10.780: WARN/System.err(2664): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
3104-12 18:21:10.780: WARN/System.err(2664): at android.view.View.layout(View.java:7192)
3204-12 18:21:10.780: WARN/System.err(2664): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
3304-12 18:21:10.790: WARN/System.err(2664): at android.view.View.layout(View.java:7192)
3404-12 18:21:10.790: WARN/System.err(2664): at android.view.ViewRoot.performTraversals(ViewRoot.java:1141)
3504-12 18:21:10.790: WARN/System.err(2664): at android.view.ViewRoot.handleMessage(ViewRoot.java:1860)
3604-12 18:21:10.790: WARN/System.err(2664): at android.os.Handler.dispatchMessage(Handler.java:99)
3704-12 18:21:10.790: WARN/System.err(2664): at android.os.Looper.loop(Looper.java:123)
3804-12 18:21:10.790: WARN/System.err(2664): at android.app.ActivityThread.main(ActivityThread.java:3839)
3904-12 18:21:10.790: WARN/System.err(2664): at java.lang.reflect.Method.invokeNative(Native Method)
4004-12 18:21:10.790: WARN/System.err(2664): at java.lang.reflect.Method.invoke(Method.java:507)
4104-12 18:21:10.790: WARN/System.err(2664): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
4204-12 18:21:10.800: WARN/System.err(2664): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
4304-12 18:21:10.800: WARN/System.err(2664): at dalvik.system.NativeStart.main(Native Method)

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

12.04.2011, 19:13:57 via Website

Mach mal hinter den Favoriten den else{} Zweig.

1else { item.put("state_favorite", null); }

Und setz' auch mal den setContentView() nach oben.

Gruß
Harald

Antworten
Martin Grulich
  • Forum-Beiträge: 56

12.04.2011, 19:17:23 via Website

Habe ich zwar entsprechend angepasst, ändert aber leider nichts.

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

12.04.2011, 20:29:22 via Website

Hast Du mal ein clean für das Projekt durchgeführt?

Der ganze Stack erzeugt bei mir das Gefühl das etwas mit den Ressourcen nicht stimmt. Sind die Drawables alle da? Schieb sie mal in drawables und nicht in die hdpi/... Ordner. Gibt es Unterverzeichnisse unterhalb der drawables Ordner - dafür ist erst letzte Woche ein Patch durchs Android Code Review geschleust worden. Nimm mal andere Namen. Wie sieht das row_layout aus (reportlist_item) - sind das auch alles ImageViews für die Drawables? Werden in dem row_layout schon anderein Drawables herangezogen?

Die Vorschläge hören sich bescheuert an aber ich würde einfach Vieles mal auf den Kopf stellen.

Gruß
Harald

Antworten
Martin Grulich
  • Forum-Beiträge: 56

12.04.2011, 20:35:48 via Website

Admin Service Limited
Hast Du mal ein clean für das Projekt durchgeführt?

Der ganze Stack erzeugt bei mir das Gefühl das etwas mit den Ressourcen nicht stimmt. Sind die Drawables alle da? Schieb sie mal in drawables und nicht in die hdpi/... Ordner. Gibt es Unterverzeichnisse unterhalb der drawables Ordner - dafür ist erst letzte Woche ein Patch durchs Android Code Review geschleust worden. Nimm mal andere Namen. Wie sieht das row_layout aus (reportlist_item) - sind das auch alles ImageViews für die Drawables? Werden in dem row_layout schon anderein Drawables herangezogen?

Die Vorschläge hören sich bescheuert an aber ich würde einfach Vieles mal auf den Kopf stellen.

Gruß
Harald

Hi Harald,

erst einmal danke. Ein Clean habe ich bereits probiert, sowie den generierten Ordner auch schon einmal gelöscht, damit dieser neu erzeugt wird.
Die drawables sind alle da und liegen, auch alle nur in dem "drawable"-Ordner, ohne Unterverzeichnisse.
reportlist_item sieht folgendermaaßen aus, (in diesem Falle noch mit Template-Strings/Images):
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="fill_parent"
5 android:layout_height="?android:attr/listPreferredItemHeight"
6 android:padding="6dip"
7 style="@style/ReportList">
8 <ImageView
9 android:id="@+id/state_read"
10 android:layout_width="wrap_content"
11 android:layout_height="fill_parent"
12 android:layout_marginRight="6dip"
13 android:src="@drawable/news_unread" />
14 <LinearLayout
15 android:orientation="vertical"
16 android:layout_width="0dip"
17 android:layout_weight="1"
18 android:layout_height="fill_parent">
19 <TextView
20 android:id="@+id/title"
21 android:layout_width="fill_parent"
22 android:layout_weight="1"
23 android:gravity="center_vertical"
24 android:ellipsize="marquee"
25 style="@style/ReportListTitle"
26 android:text="Dies ist ein toller Titel"
27 android:layout_height="wrap_content"
28 android:singleLine="true" />
29 <LinearLayout
30 android:layout_width="fill_parent"
31 android:id="@+id/linearLayout1"
32 android:layout_height="wrap_content">
33 <TextView
34 android:id="@+id/datetime"
35 android:layout_width="wrap_content"
36 android:layout_height="wrap_content"
37 android:layout_weight="1"
38 android:gravity="left"
39 android:ellipsize="none"
40 style="@style/ReportListDate"
41 android:text="24.12.2412 24:12 Uhr" />
42 <ImageView
43 android:id="@+id/state_favorite"
44 android:layout_width="wrap_content"
45 android:layout_height="fill_parent"
46 android:gravity="right"
47 android:src="@drawable/report_favorite" />
48 <ImageView
49 android:id="@+id/state_loaded"
50 android:layout_width="wrap_content"
51 android:layout_height="fill_parent"
52 android:gravity="right" />
53 </LinearLayout>
54 </LinearLayout>
55</LinearLayout>
Inzwischen habe ich angefangen mal den ganzen Prozess mit der Hashmap und dem ListAdapter neu zu schreiben, in der Hoffnung, das ich irgendwo etwas übersehen hatte, was mit dem neu schreiben behoben werden kann. Wüsste aber natürlich dennoch gern wie es zu diesem Umstand kommen konnte.

[UPDATE]
Nachdem ich nun die verwendeten Grafiken alle entfernt habe und diese mit neuen Namen wieder eingebunden habe funktioniert es jetzt.
Wie schön, einen ganzen Tag für einen Fehler verschwendet, der nicht in der App, sondern in der IDE lag. Nun gut, vielen dank für den Tipp und so kann ich ja jetzt weitermachen.

Danke & Gruß Martin

— geändert am 12.04.2011, 22:09:25

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

12.04.2011, 23:41:22 via Website

Schön das ich zumindest ein paar Anregungen beitragen konnte.

Dieser ganze Ressourcen Kram in der Android Entwicklungsumgebung geht mir schon seit Monaten ganz gehörig auf den Zeiger. Es vergeht nicht ein einziger Tag an dem ich beim Start des Eclipse nicht darauf hingewiesen werde das in ein paar Projekten die R Klasse nicht gefunden wurde. Ich darf dann für jedes dieser Projekte einen neuen Compile erzwingen und dann ist alles wieder im Lot.

Bei jedem Release Build bekomme ich Panik wenn ich daran denke das ausgerechnet dann eine Ressource-Id kaputt geht.

Und mit jedem Update des SDK hoffe ich das dieses Problem endlich gelöst wird - wird es aber nicht.

Deshalb empfehle ich bei jedem Problem das dem wie das von Dir geschilderte ähnelt ein wenig an den Ressourcen "rumzufummeln".

Gruß
Harald

Antworten