Java Android类型不匹配:无法从JSONArray转换为ArrayList
我试图在片段中创建一个列表视图,但我得到了这个。我在注释中添加了错误注释。我不知道为什么,因为我是android的新手,有谁能帮帮我吗 这条线上有多个标记 类型不匹配:无法从JSONArray转换为ArrayList> 类型ArrayList的方法长度未定义> 对于类型ArrayList> FragmentaReviews.javaJava Android类型不匹配:无法从JSONArray转换为ArrayList,java,android,string,arraylist,Java,Android,String,Arraylist,我试图在片段中创建一个列表视图,但我得到了这个。我在注释中添加了错误注释。我不知道为什么,因为我是android的新手,有谁能帮帮我吗 这条线上有多个标记 类型不匹配:无法从JSONArray转换为ArrayList> 类型ArrayList的方法长度未定义> 对于类型ArrayList> FragmentaReviews.java public class FragmentaReviews extends SherlockFragment { private JSONReview json;
public class FragmentaReviews extends SherlockFragment {
private JSONReview json;
ListView list;
TextView title;
ArrayList<HashMap<String, String>> ListReview = new ArrayList<HashMap<String, String>>();
//URL to get JSON Array
private static String url = "http:/10.0.3.2/1aaa/listreview.php";
//JSON Node Names
private static final String TAG_Review = "ListReview";
private static final String TAG_title = "title";
JSONArray reviews = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.row_main, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
ListReview = new ArrayList<HashMap<String, String>>();
new JSONParse().execute();
}
private class JSONParse extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
JSONReview jParser = new JSONReview();
// json = new JSONReview();
private JSONObject json;
@Override
protected void onPreExecute() {
super.onPreExecute();
title = (TextView)getView().findViewById(R.id.title);
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
// Getting JSON from URL
json = jParser.getJSONFromURL(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
try {
//Change here
// Getting JSON Array from URL
JSONArray jsonArray = json.getJSONArray(TAG_Review);
for(int i = 0; i < jsonArray.length(); i++){
JSONObject c = jsonArray.getJSONObject(i);
//Stop here
// Storing JSON item in a Variable
String title = c.getString(TAG_title);
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_title, title);
ListReview.add(map);
list = (ListView)getView().findViewById(R.id.list);
ListAdapter adapter = new SimpleAdapter(getActivity(), ListReview,
R.layout.fragmenta_review,
new String[] { TAG_title, TAG_tujuanwisata}, new int[] {
R.id.title);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
logcat
01-08 17:47:32.555: E/WindowManager(2186): Activity com.android.GoTrip.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{527c304c V.E..... R......D 0,0-684,192} that was originally added here
01-08 17:47:32.555: E/WindowManager(2186): android.view.WindowLeaked: Activity com.android.GoTrip.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{527c304c V.E..... R......D 0,0-684,192} that was originally added here
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:345)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
01-08 17:47:32.555: E/WindowManager(2186): at android.app.Dialog.show(Dialog.java:281)
01-08 17:47:32.555: E/WindowManager(2186): at com.android.GoTrip.FragmentaReviews$JSONParse.onPreExecute(FragmentaReviews.java:92)
01-08 17:47:32.555: E/WindowManager(2186): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
01-08 17:47:32.555: E/WindowManager(2186): at android.os.AsyncTask.execute(AsyncTask.java:534)
01-08 17:47:32.555: E/WindowManager(2186): at com.android.GoTrip.FragmentaReviews.onActivityCreated(FragmentaReviews.java:70)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1794)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:967)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
01-08 17:47:32.555: E/WindowManager(2186): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
01-08 17:47:32.555: E/WindowManager(2186): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
01-08 17:47:32.555: E/WindowManager(2186): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
01-08 17:47:32.555: E/WindowManager(2186): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
01-08 17:47:32.555: E/WindowManager(2186): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
01-08 17:47:32.555: E/WindowManager(2186): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-08 17:47:32.555: E/WindowManager(2186): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.View.measure(View.java:15848)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.Choreographer.doFrame(Choreographer.java:532)
01-08 17:47:32.555: E/WindowManager(2186): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
01-08 17:47:32.555: E/WindowManager(2186): at android.os.Handler.handleCallback(Handler.java:730)
01-08 17:47:32.555: E/WindowManager(2186): at android.os.Handler.dispatchMessage(Handler.java:92)
01-08 17:47:32.555: E/WindowManager(2186): at android.os.Looper.loop(Looper.java:137)
01-08 17:47:32.555: E/WindowManager(2186): at android.app.ActivityThread.main(ActivityThread.java:5103)
01-08 17:47:32.555: E/WindowManager(2186): at java.lang.reflect.Method.invokeNative(Nati
在这里:
ListReview=json.getJSONArrayTAG_Review
您正在尝试将从json.getJSONArrayTAG_Review返回的JSONArray分配给列表对象ListReview。从JSONObject获取JSONArray as:
JSONArray jsonArray = json.getJSONArray(TAG_Review);
并使用jsonArray而不是ListReview从jsonArray获取长度和值。您声明了一个成员变量
ArrayList<HashMap<String, String>> ListReview = new ArrayList<HashMap<String, String>>();
到
并使用数组进行解析我已经发布了我的日志。。Activity com.android.GoTrip.main Activity已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView{527c304c V.E…..R……D 0,0-684192}最初添加到这里的是01-08 17:47:32.555:E/WindowManager2186:android.view.WindowLeaked:Activity com.android.GoTrip.main活动泄漏了最初添加到这里的window com.android.internal.policy.impl.PhoneWindow$DecorView{527c304c V.E…..R……d0,0-684192}
JSONArray jsonArray = json.getJSONArray(TAG_Review);
ArrayList<HashMap<String, String>> ListReview = new ArrayList<HashMap<String, String>>();
ListReview = json.getJSONArray(TAG_Review);
JSONArrary array = json.getJSONArray(TAG_Review);