我用json创建Rss,当我从背景中获得jsonObject时,在postExecute中创建带有对象结果的映射,然后我有一个错误LogCat导致了SimpleAdapter中的错误WebView为什么没有人能帮上忙?
LogCat
12-05 17:55:35.597: E/AndroidRuntime(22543): FATAL EXCEPTION: main
12-05 17:55:35.597: E/AndroidRuntime(22543): java.lang.IllegalStateException: android.webkit.WebView is not a view that can be bounds by this SimpleAdapter
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.SimpleAdapter.bindView(SimpleAdapter.java:195)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:126)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.SimpleAdapter.getView(SimpleAdapter.java:114)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.AbsListView.obtainView(AbsListView.java:2161)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.ListView.makeAndAddView(ListView.java:1831)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.ListView.fillDown(ListView.java:674)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.ListView.fillFromTop(ListView.java:735)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.ListView.layoutChildren(ListView.java:1652)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.AbsListView.onLayout(AbsListView.java:1996)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.View.layout(View.java:14003)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewGroup.layout(ViewGroup.java:4375)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.View.layout(View.java:14003)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewGroup.layout(ViewGroup.java:4375)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.View.layout(View.java:14003)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewGroup.layout(ViewGroup.java:4375)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.View.layout(View.java:14003)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewGroup.layout(ViewGroup.java:4375)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.View.layout(View.java:14003)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewGroup.layout(ViewGroup.java:4375)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1711)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.Choreographer.doFrame(Choreographer.java:532)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.os.Handler.handleCallback(Handler.java:725)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.os.Handler.dispatchMessage(Handler.java:92)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.os.Looper.loop(Looper.java:137)
12-05 17:55:35.597: E/AndroidRuntime(22543): at android.app.ActivityThread.main(ActivityThread.java:5238)
12-05 17:55:35.597: E/AndroidRuntime(22543): at java.lang.reflect.Method.invokeNative(Native Method)
12-05 17:55:35.597: E/AndroidRuntime(22543): at java.lang.reflect.Method.invoke(Method.java:511)
12-05 17:55:35.597: E/AndroidRuntime(22543): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
12-05 17:55:35.597: E/AndroidRuntime(22543): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
12-05 17:55:35.597: E/AndroidRuntime(22543): at dalvik.system.NativeStart.main(Native Method)SourceCode
protected void onPostExecute(JSONObject result) {
super.onPostExecute(result);
if(result != null){
JSONObject jsn = result;
try {
JSONArray jarray = jsn.getJSONArray("item");
for (int i = 0; i < jarray.length(); i++){
JSONObject jsno = jarray.getJSONObject(i);
Log.d("Log", jsno.getString("title"));
rssMap = new HashMap<String, Object>();
rssMap.put(TITLE, jsno.getString("title"));
rssMap.put(CATEGORY, jsno.getString("category"));
rssMap.put(DATE, jsno.getString("pubDate"));
rssMap.put(DESCRIPTION, jsno.getString("description"));// This for webView, it's html code!
rssView.add(rssMap);
}
SimpleAdapter adapter = new SimpleAdapter(
getApplicationContext(), rssView, R.layout.item,
new String[] {TITLE, CATEGORY, DATE, DESCRIPTION},
new int[] {R.id.title, R.id.cat, R.id.date, R.id.desc}
);
list.setAdapter(adapter);
}
catch (JSONException e) {
e.printStackTrace();}
}
else{
/*
* Тут мне нужен AlertDialog с оповещанием что нету подключения к сети!
* */
showDialog(errorShow);
}
}
}item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Заголовок"
android:textColor="#33b5e5"
android:textSize="23sp" />
<TextView
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="05.12.2012"
android:textColor="#969696"
android:textSize="14sp" />
<TextView
android:id="@+id/cat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Категория"
android:textColor="#969696"
android:textSize="14sp" />
<WebView
android:id="@+id/desc"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>发布于 2012-12-05 14:00:09
SimpleAdapter的Android文档声明:
将数据绑定到视图分两个阶段进行。首先,如果SimpleAdapter.ViewBinder可用,则调用
setViewValue(android.view.View, Object, String)。如果返回的值为true,则发生绑定。如果返回的值为false,则按顺序尝试以下视图:
CheckBox)。所期望的绑定值是布尔值。TextView。所期望的绑定值是一个字符串,并调用setViewText(TextView, String)。ImageView。所期望的绑定值是一个资源id或一个字符串,并调用setViewImage(ImageView, int)或setViewImage(ImageView, String)。如果找不到合适的绑定,则会引发IllegalStateException。
适配器无法将您的jsno.getString("description") (即String)单独转换为URL。您可以尝试转换字符串,然后将其作为rssMap中的URL对象,但是,我建议您实现自己的自定义Adapter并重写getView()方法,以便在绑定期间设置WebView的URL。
https://stackoverflow.com/questions/13724317
复制相似问题