Java 从JSON创建ListAdapter
我在安卓应用程序中遇到了一些问题:我想从RSS订阅源中读取信息,并在安卓视图中显示它们。 我正在使用Java 从JSON创建ListAdapter,java,android,asynchronous,gson,Java,Android,Asynchronous,Gson,我在安卓应用程序中遇到了一些问题:我想从RSS订阅源中读取信息,并在安卓视图中显示它们。 我正在使用android-async-http1.4.3.jarlibs将我的应用程序连接到此站点: 通过这种连接,我下载了XML文件,并使用gson libs将其转换为JSON文件,但当我在Android手机上尝试应用程序时,会出现空指针异常。要连接、获取xml并将其转换为JSON代码的类如下所示: private void loadTitle() { String URL = "http
android-async-http1.4.3.jar
libs将我的应用程序连接到此站点:
通过这种连接,我下载了XML文件,并使用gson libs将其转换为JSON文件,但当我在Android手机上尝试应用程序时,会出现空指针异常。要连接、获取xml并将其转换为JSON代码的类如下所示:
private void loadTitle() {
String URL = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http://f1grandprix.motorionline.com/feed/";
AsyncHttpClient client = new AsyncHttpClient();
client.get(URL, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String text) {
super.onSuccess(text);
Gson decoder = new Gson();
JsonResponse jr = decoder.fromJson(text, JsonResponse.class);
Entry[] entries = jr.responseData.feed.entries;
for (int i = 0; i < entries.length; i++) {
Log.d("NET", "Il titolo della " + i + " entry è: " + entries[i].title);
}
final ListView lv_title = (ListView) findViewById(R.id.lv_title);
//ListAdapter la_title = new TitleAdapter(MainActivity.this, entries);
//Log.d("LIST_ADAPTER", "Caricato correttamente il list adaptor: "+ la_title);
//lv_title.setAdapter(la_title);
lv_title.setAdapter(new TitleAdapter(MainActivity.this, entries));
pleaseWait.hide();
}
@Override
public void onFailure(Throwable arg0, String arg1) {
super.onFailure(arg0, arg1);
Log.d("FAIL", "Failure");
pleaseWait.hide();
}
});
}
有人能帮我解决这个问题吗?
谢谢大家!
有人能帮我解决这个问题吗
在传递给自定义ArrayAdapter
的条目
数组中(对于该数组,您仍然调用super.getView()
方法(或者您没有覆盖它),对吗?)似乎有null
值。如果使用ArrayAdapter
的getView()
方法的默认实现,这是一个问题,因为ArrayAdapter
将调用该方法,默认情况下,它的type对象(Entry
对象)上的toString()
方法将获得一个字符串来显示在行中
因此,请确保传递给ArrayAdapter
实现的数组不包含空值 谢谢大家!!这是一个很好的建议!
public class TitleAdapter extends ArrayAdapter<Entry> {
public TitleAdapter(Context context, Entry[] title) {
super(context, R.layout.list_item, R.id.lv_title, title);
}
02-23 12:46:05.525: E/AndroidRuntime(4577): FATAL EXCEPTION: main
02-23 12:46:05.525: E/AndroidRuntime(4577): java.lang.NullPointerException
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.AbsListView.obtainView(AbsListView.java:1495)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.ListView.onMeasure(ListView.java:1127)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.View.measure(View.java:8335)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.View.measure(View.java:8335)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.View.measure(View.java:8335)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.View.measure(View.java:8335)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.View.measure(View.java:8335)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.ViewRoot.performTraversals(ViewRoot.java:843)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.view.ViewRoot.handleMessage(ViewRoot.java:1892)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.os.Handler.dispatchMessage(Handler.java:99)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.os.Looper.loop(Looper.java:130)
02-23 12:46:05.525: E/AndroidRuntime(4577): at android.app.ActivityThread.main(ActivityThread.java:3835)
02-23 12:46:05.525: E/AndroidRuntime(4577): at java.lang.reflect.Method.invokeNative(Native Method)
02-23 12:46:05.525: E/AndroidRuntime(4577): at java.lang.reflect.Method.invoke(Method.java:507)
02-23 12:46:05.525: E/AndroidRuntime(4577): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
02-23 12:46:05.525: E/AndroidRuntime(4577): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
02-23 12:46:05.525: E/AndroidRuntime(4577): at dalvik.system.NativeStart.main(Native Method)