SimpleAdapter的使用出现IOException----求解
1.用SimpleAdapter来填充Listview
ListView lv = (ListView) findViewById(R.id.LvNetwork);
mAccessPointData = new ArrayList<Map<String, Object>>();
mAccessPointAdapter = new SimpleAdapter(this, mAccessPointData,
R.layout.network_listitem, new String[] { "title", "image1",
"image2", "image3", "state", "AccessPointState",
"Level" }, // +helen
new int[] { R.id.ItemTitle, R.id.iv1, R.id.iv2, R.id.iv3,
R.id.ItemState} // -helen
);
Log.d("helen", "before set Adapter");
lv.setAdapter(mAccessPointAdapter);
2.在另一个地方对mAccessPointData进行add value.
if (added) {
boolean isHas = false;
Iterator<Map<String, Object>> it = mAccessPointData.iterator();
while (it.hasNext()) {
Map<String, Object> item = (Map<String, Object>) it.next();
if (((AccessPointState) item.get("AccessPointState"))
.equals(ap)) {
isHas = true;
break;
}
}
if (!isHas) {
Map<String, Object> item = new HashMap<String, Object>();
item.put("title", ap.getHumanReadableSsid());
if (ap.hasSecurity()) {
item.put("image1", R.drawable.ic_secure);
}
// item.put("image2", null);
int level = 0;
if (ap.seen) {
if (ap.getSummarizedStatus().equals("Connected")) {
switch (WifiManager.calculateSignalLevel(ap.signal, 4)) {
case 0:
level = 0;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_on_0);
break;
case 1:
level = 1;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_on_weak);
break;
case 2:
level = 2;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_on);
break;
case 3:
level = 3;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_4bars_on);
break;
}
} else {
switch (WifiManager.calculateSignalLevel(ap.signal, 4)) {
case 0:
level = 0;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_off_0);
break;
case 1:
level = 1;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_off_weak);
break;
case 2:
level = 2;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_off);
break;
case 3:
level = 3;
item.put("Level", level);
item.put("image2", R.drawable.wifi_connection_4bars11);
break;
}
}
} else {
item.put("image2", R.drawable.wifi_connection_off);
}
item.put("Level", level);
item.put("AccessPointState", ap);
item.put("state", ap.getSummarizedStatus()); // helen
Log.i("helen", ap.getSummarizedStatus()); // helen
ap.setCallback(this);
Log.d("helen", "after set call back");
mAccessPointData.add(item);
Log.d("helen", "after mAccessPointData add");
}
} else {
Iterator<Map<String, Object>> it = mAccessPointData.iterator();
while (it.hasNext()) {
Map<String, Object> item = (Map<String, Object>) it.next();
if (((AccessPointState) item.get("AccessPointState"))
.equals(ap)) {
it.remove();
}
}
}
mAccessPointAdapter.notifyDataSetChanged();
3. 在notifyDataSetChanged之后开始报IOException
D/skia ( 228): ---- read threw an exception
W/System.err( 228): java.io.IOException: Is a directory
W/System.err( 228): at org.apache.harmony.luni.platform.OSFileSystem.readImp
l(Native Method)
W/System.err( 228): at org.apache.harmony.luni.platform.OSFileSystem.read(OS
FileSystem.java:154)
W/System.err( 228): at java.io.FileInputStream.read(FileInputStream.java:333
)
W/System.err( 228): at java.io.BufferedInputStream.fillbuf(BufferedInputStre
am.java:200)
W/System.err( 228): at java.io.BufferedInputStream.read(BufferedInputStream.
java:350)
W/System.err( 228): at android.graphics.BitmapFactory.nativeDecodeStream(Nat
ive Method)
W/System.err( 228): at android.graphics.BitmapFactory.decodeStream(BitmapFac
tory.java:375)
W/System.err( 228): at android.graphics.BitmapFactory.decodeFile(BitmapFacto
ry.java:171)
W/System.err( 228): at android.graphics.BitmapFactory.decodeFile(BitmapFacto
ry.java:196)
W/System.err( 228): at android.graphics.drawable.Drawable.createFromPath(Dra
wable.java:762)
W/System.err( 228): at android.widget.ImageView.resolveUri(ImageView.java:49
8)
W/System.err( 228): at android.widget.ImageView.setImageURI(ImageView.java:2
87)
W/System.err( 228): at android.widget.SimpleAdapter.setViewImage(SimpleAdapt
er.java:270)
W/System.err( 228): at android.widget.SimpleAdapter.bindView(SimpleAdapter.j
ava:198)
W/System.err( 228): at android.widget.SimpleAdapter.createViewFromResource(S
impleAdapter.java:136)
W/System.err( 228): at android.widget.SimpleAdapter.getView(SimpleAdapter.ja
va:114)
W/System.err( 228): at android.widget.AbsListView.obtainView(AbsListView.jav
a:1252)
W/System.err( 228): at android.widget.ListView.makeAndAddView(ListView.java:
1650)
W/System.err( 228): at android.widget.ListView.fillSpecific(ListView.java:12
09)
W/System.err( 228): at android.widget.ListView.layoutChildren(ListView.java:
1486)
W/System.err( 228): at android.widget.AbsListView.onLayout(AbsListView.java:
1114)
W/System.err( 228): at android.view.View.layout(View.java:6133)
W/System.err( 228): at android.widget.LinearLayout.setChildFrame(LinearLayou
t.java:1119)
W/System.err( 228): at android.widget.LinearLayout.layoutVertical(LinearLayo
ut.java:998)
W/System.err( 228): at android.widget.LinearLayout.onLayout(LinearLayout.jav
a:918)
W/System.err( 228): at android.view.View.layout(View.java:6133)
W/System.err( 228): at android.widget.LinearLayout.setChildFrame(LinearLayou
t.java:1119)
W/System.err( 228): at android.widget.LinearLayout.layoutVertical(LinearLayo
ut.java:998)
W/System.err( 228): at android.widget.LinearLayout.onLayout(LinearLayout.jav
a:918)
W/System.err( 228): at android.view.View.layout(View.java:6133)
W/System.err( 228): at android.widget.FrameLayout.onLayout(FrameLayout.java:
333)
W/System.err( 228): at android.view.View.layout(View.java:6133)
W/System.err( 228): at android.widget.FrameLayout.onLayout(FrameLayout.java:
333)
W/System.err( 228): at android.view.View.layout(View.java:6133)
W/System.err( 228): at android.view.ViewRoot.performTraversals(ViewRoot.java
:929)
W/System.err( 228): at android.view.ViewRoot.handleMessage(ViewRoot.java:148
2)
W/System.err( 228): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 228): at android.os.Looper.loop(Looper.java:123)
W/System.err( 228): at android.app.ActivityThread.main(ActivityThread.java:3
948)
W/System.err( 228): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 228): at java.lang.reflect.Method.invoke(Method.java:521)
W/System.err( 228): at com.android.internal.os.ZygoteInit$MethodAndArgsCalle
r.run(ZygoteInit.java:782)
W/System.err( 228): at com.android.internal.os.ZygoteInit.main(ZygoteInit.ja
va:540)
W/System.err( 228): at dalvik.system.NativeStart.main(Native Method)
想了好久都不明白为啥会报IOException, 向高手求救,不胜感激!