试图从片段解析JSON文件列表视图 [英] Trying to parse JSON file in Listview from Fragment

查看:246
本文介绍了试图从片段解析JSON文件列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

刚刚发现了很多的JSON用PHP解析在Android在这里和其他地方,并试图与我的项目使用示例。在活动没关系,但改变一个片段它不工作。我认为这是一个愚蠢的错误我是gettint它。

片段code:

 包com.example.waitersoriginal;进口的java.util.ArrayList;
进口的java.util.HashMap;进口org.json.JSONArray;
进口org.json.JSONException;
进口org.json.JSONObject;进口android.app.ListFragment;
进口android.app.ProgressDialog;
进口android.os.AsyncTask;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.AdapterView;
进口android.widget.AdapterView.OnItemClickListener;
进口android.widget.ListAdapter;
进口android.widget.ListView;
进口android.widget.SimpleAdapter;公共类ListaFragment扩展ListFragment {私人ProgressDialog pDialog; 私有静态最后弦乐URL_SELECT =HTTP://localhost/waiters/select_bebidas.php// JSONTAGS
私有静态最后弦乐TAG_NOME =节拍器;
私有静态最后弦乐TAG_BEBIDAS =BEBIDAS;
私有静态最后弦乐TAG_DESCR =DESCR;私人JSONArray mProdutos = NULL;
私人的ArrayList<&HashMap的LT;字符串,字符串>> mProdutosList;
公共ListaFragment(){}@覆盖公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState)
{
  返回inflater.inflate(R.layout.lista_fragment,集装箱,FALSE);
}@覆盖
公共无效onResume(){
    // TODO自动生成方法存根
    super.onResume();
    //加载通过的AsyncTask的评论
    新LoadEvents()执行();  }
  公共无效updateJSONdata(){    mProdutosList =新的ArrayList<&HashMap的LT;字符串,字符串>>();
    JSONParser jParser =新JSONParser();    JSONObject的JSON = jParser.getJSONFromUrl(URL_SELECT);    尝试{
        mProdutos = json.getJSONArray(TAG_BEBIDAS);
        的for(int i = 0; I< mProdutos.length();我++){
            JSONObject的C = mProdutos.getJSONObject(I)            字符串诺姆= c.getString(TAG_NOME);
            字符串DESCR = c.getString(TAG_DESCR);            //创建新的HashMap
            HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();            map.put(TAG_NOME,诺姆);
            map.put(TAG_DESCR,DESCR);            mProdutosList.add(地图);        }    }赶上(JSONException E){
        e.printStackTrace();
    }
}
私人无效updateList(){
ListAdapter适配器=新SimpleAdapter(getActivity(),mProdutosList,
        R.layout.list_item,
        新的String [] {TAG_NOME,TAG_DESCR},
        新的INT [] {R.id.pid,R.id.name});            setListAdapter(适配器);            ListView控件LV = getListView();
            lv.setOnItemClickListener(新OnItemClickListener(){                @覆盖
                公共无效onItemClick(适配器视图<>母公司,观景,
                        INT位置,长的id){
                    }
                });
}公共类LoadEvents扩展的AsyncTask<太虚,太虚,布尔> {    @覆盖
    在preExecute保护无效(){
        super.on preExecute();
        pDialog =新ProgressDialog(getActivity());
        pDialog.setMessage(加载活动...);
        pDialog.setIndeterminate(假);
        pDialog.setCancelable(真);
        pDialog.show();
    }
    @覆盖
    保护布尔doInBackground(虚空......为arg0){        updateJSONdata();
        返回null;
    }    @覆盖
    保护无效onPostExecute(布尔结果){
        super.onPostExecute(结果);
        pDialog.dismiss();        updateList();
        }
      }
   }

logcat的错误:

  10-22 22:41:40.814:E / AndroidRuntime(2513):致命异常:主要
    10-22 22:41:40.814:E / AndroidRuntime(2513):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.waitersoriginal / com.example.waitersoriginal.BebidaActivity}:android.view.InflateException:二进制XML文件行#15:错误充气类片段
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ActivityThread.access $ 600(ActivityThread.java:141)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.os.Handler.dispatchMessage(Handler.java:99)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.os.Looper.loop(Looper.java:137)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ActivityThread.main(ActivityThread.java:5103)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在java.lang.reflect.Method.invokeNative(本机方法)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在java.lang.reflect.Method.invoke(Method.java:525)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在dalvik.system.NativeStart.main(本机方法)
    10-22 22:41:40.814:E / AndroidRuntime(2513):android.view.InflateException:二进制XML文件行#15:错误充气类片段产生的原因
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.view.LayoutInflater.inflate(LayoutInflater.java:353)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.Activity.setContentView(Activity.java:1895)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在com.example.waitersoriginal.BebidaActivity.onCreate(BebidaActivity.java:19)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.Activity.performCreate(Activity.java:5133)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
    10-22 22:41:40.814:E / AndroidRuntime(2513):11 ...更多
    10-22 22:41:40.814:E / AndroidRuntime(2513):了java.lang.RuntimeException:通过引起内容与观点id属性'android.R.id.list'不是一个ListView类
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ListFragment.ensureList(ListFragment.java:402)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.ListFragment.onViewCreated(ListFragment.java:203)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1137)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.app.Activity.onCreateView(Activity.java:4746)
    10-22 22:41:40.814:E / AndroidRuntime(2513):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
    10-22 22:41:40.814:E / AndroidRuntime(2513):21 ...更多

任何想法?

感谢所有。

编辑:

lista_fragment.xml

 <?XML版本=1.0编码=UTF-8&GT?;
    < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:方向=垂直>        < ListView控件
            机器人:ID =@ + ID / ListView1的
            机器人:layout_width =match_parent
            机器人:layout_height =WRAP_CONTENT>
        < /&的ListView GT;    < / LinearLayout中>

编辑2:

logcat的错误:

  10-22 23:46:11.842:W / System.err的(2729):org.apache.http.conn.HttpHostConnectException:连接到http:// localhost的拒绝
10-22 23:46:12.062:W / System.err的(2729):在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
10-22 23:46:12.192:W / System.err的(2729):在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
10-22 23:46:12.212:W / System.err的(2729):在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
10-22 23:46:12.262:W / System.err的(2729):在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
10-22 23:46:12.292:W / System.err的(2729):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
10-22 23:46:12.342:W / System.err的(2729):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-22 23:46:12.352:W / System.err的(2729):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-22 23:46:12.362:W / System.err的(2729):在com.example.waitersoriginal.JSONParser.getJSONFromUrl(JSONParser.java:30)
10-22 23:46:12.362:W / System.err的(2729):在com.example.waitersoriginal.ListaFragment.updateJSONdata(ListaFragment.java:60)
10-22 23:46:12.392:W / System.err的(2729):在com.example.waitersoriginal.ListaFragment $ LoadEvents.doInBackground(ListaFragment.java:122)
10-22 23:46:12.392:W / System.err的(2729):在com.example.waitersoriginal.ListaFragment $ LoadEvents.doInBackground(ListaFragment.java:1)
10-22 23:46:12.412:W / System.err的(2729):在android.os.AsyncTask $ 2.call(AsyncTask.java:287)
10-22 23:46:12.422:W / System.err的(2729):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-22 23:46:12.442:W / System.err的(2729):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:230)
10-22 23:46:12.462:W / System.err的(2729):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-22 23:46:12.462:W / System.err的(2729):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:573)
10-22 23:46:12.472:W / System.err的(2729):在java.lang.Thread.run(Thread.java:841)
10-22 23:46:12.492:W / System.err的(2729):java.net.ConnectException:产生的原因无法连接到/127.0.0.1(80端口):连接失败:ECONNREFUSED(连接被拒绝)
10-22 23:46:12.512:W / System.err的(2729):在libcore.io.IoBridge.connect(IoBridge.java:114)
10-22 23:46:12.512:W / System.err的(2729):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
10-22 23:46:12.512:W / System.err的(2729):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
10-22 23:46:12.552:W / System.err的(2729):在java.net.Socket.connect(Socket.java:842)
10-22 23:46:12.562:W / System.err的(2729):在org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
10-22 23:46:12.562:W / System.err的(2729):在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
10-22 23:46:12.562:W / System.err的(2729):16 ...更多
10-22 23:46:12.562:W / System.err的(2729):libcore.io.ErrnoException:由造成连接失败:ECONNREFUSED(连接被拒绝)
10-22 23:46:12.592:W / System.err的(2729):在libcore.io.Posix.connect(本机方法)
10-22 23:46:12.652:W / System.err的(2729):在libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
10-22 23:46:12.652:W / System.err的(2729):在libcore.io.IoBridge.connectErrno(IoBridge.java:127)
10-22 23:46:12.662:W / System.err的(2729):在libcore.io.IoBridge.connect(IoBridge.java:112)
10-22 23:46:12.662:W / System.err的(2729):21 ...更多
10-22 23:46:12.662:E /缓存器的错误(2729):错误转换结果显示java.lang.NullPointerException:锁== NULL
10-22 23:46:12.702:E / JSON解析器(2729):错误分析数据org.json.JSONException:在字符输入0结束
10-22 23:46:12.702:W / dalvikvm(2729):主题ID = 11:螺纹未捕获的异常退出(组= 0xb2f30648)
10-22 23:46:12.712:E / AndroidRuntime(2729):致命异常:AsyncTask的#1
10-22 23:46:12.712:E / AndroidRuntime(2729):了java.lang.RuntimeException:执行doInBackground发生错误()
10-22 23:46:12.712:E / AndroidRuntime(2729):在android.os.AsyncTask $ 3.done(AsyncTask.java:299)
10-22 23:46:12.712:E / AndroidRuntime(2729):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
10-22 23:46:12.712:E / AndroidRuntime(2729):在java.util.concurrent.FutureTask.setException(FutureTask.java:219)
10-22 23:46:12.712:E / AndroidRuntime(2729):在java.util.concurrent.FutureTask.run(FutureTask.java:239)
10-22 23:46:12.712:E / AndroidRuntime(2729):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:230)
10-22 23:46:12.712:E / AndroidRuntime(2729):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-22 23:46:12.712:E / AndroidRuntime(2729):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:573)
10-22 23:46:12.712:E / AndroidRuntime(2729):在java.lang.Thread.run(Thread.java:841)
10-22 23:46:12.712:E / AndroidRuntime(2729):因:显示java.lang.NullPointerException
10-22 23:46:12.712:E / AndroidRuntime(2729):在com.example.waitersoriginal.ListaFragment.updateJSONdata(ListaFragment.java:65)
10-22 23:46:12.712:E / AndroidRuntime(2729):在com.example.waitersoriginal.ListaFragment $ LoadEvents.doInBackground(ListaFragment.java:122)
10-22 23:46:12.712:E / AndroidRuntime(2729):在com.example.waitersoriginal.ListaFragment $ LoadEvents.doInBackground(ListaFragment.java:1)
10-22 23:46:12.712:E / AndroidRuntime(2729):在android.os.AsyncTask $ 2.call(AsyncTask.java:287)
10-22 23:46:12.712:E / AndroidRuntime(2729):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-22 23:46:12.712:E / AndroidRuntime(2729):... 4个
10-22 23:46:13.412:W / EGL_emulation(2729):eglSurfaceAttrib没有实现
10-22 23:46:14.142:E /窗口管理器(2729):活动com.example.waitersoriginal.BebidaActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow $ {DecorView VE b320ffd0 .... - [R .. ....,最初这里加入D- 0,0-576,96}
10-22 23:46:14.142:E /窗口管理器(2729):android.view.WindowLeaked:活动com.example.waitersoriginal.BebidaActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow $ {DecorView VE b320ffd0。这原本是在这里加入... - [R ......ð0,0-576,96}
10-22 23:46:14.142:E /窗口管理器(2729):在android.view.ViewRootImpl<&初始化GT;(ViewRootImpl.java:345)
10-22 23:46:14.142:E /窗口管理器(2729):在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)
10-22 23:46:14.142:E /窗口管理器(2729):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.Dialog.show(Dialog.java:281)
10-22 23:46:14.142:E /窗口管理器(2729):在com.example.waitersoriginal.ListaFragment $ LoadEvents.on preExecute(ListaFragment.java:117)
10-22 23:46:14.142:E /窗口管理器(2729):在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
10-22 23:46:14.142:E /窗口管理器(2729):在android.os.AsyncTask.execute(AsyncTask.java:534)
10-22 23:46:14.142:E /窗口管理器(2729):在com.example.waitersoriginal.ListaFragment.onResume(ListaFragment.java:50)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.Fragment.performResume(Fragment.java:1738)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1039)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1850)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.Activity.performResume(Activity.java:5221)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2780)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2819)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2266)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.ActivityThread.access $ 600(ActivityThread.java:141)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256)
10-22 23:46:14.142:E /窗口管理器(2729):在android.os.Handler.dispatchMessage(Handler.java:99)
10-22 23:46:14.142:E /窗口管理器(2729):在android.os.Looper.loop(Looper.java:137)
10-22 23:46:14.142:E /窗口管理器(2729):在android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 23:46:14.142:E /窗口管理器(2729):在java.lang.reflect.Method.invokeNative(本机方法)
10-22 23:46:14.142:E /窗口管理器(2729):在java.lang.reflect.Method.invoke(Method.java:525)
10-22 23:46:14.142:E /窗口管理器(2729):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 23:46:14.142:E /窗口管理器(2729):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 23:46:14.142:E /窗口管理器(2729):在dalvik.system.NativeStart.main(本机方法)


解决方案

您刚才提到您的类是ListFragment,这意味着你的XML应该只有一个列表视图,在这里你有一个的LinearLayout和里面一个ListView。你的XML应该是这样的......

 < ListView控件的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID /列表视图
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT/>

如果您不希望改变你的XML,改变你的类将片段

 公共类ListaFragment扩展片段

手动查找列表视图

 的ListView ListView的;
    @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                捆绑savedInstanceState){
            CTX = getActivity();
            LayoutInflater m_inflater = LayoutInflater.from(getActivity());
            rootView = m_inflater.inflate(R.layout.lista_fragment,NULL);
ListView控件= rootView.findViewById(R.id.listView1);
            返回rootView;
    }

和把它从那里。

Just found a lot of examples of JSON parsing with PHP on Android here and other places and trying to use with my project. In Activity it's Okay, but changing to a Fragment it doesn't work. I think it's a stupid mistake i'm gettint it.

The fragment code:

package com.example.waitersoriginal;

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListFragment;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class ListaFragment extends ListFragment {

private ProgressDialog pDialog;

 private static final String URL_SELECT ="http://localhost/waiters/select_bebidas.php";   

//JSONTAGS
private static final String TAG_NOME = "NOME";
private static final String TAG_BEBIDAS = "bebidas";
private static final String TAG_DESCR = "DESCR";

private JSONArray mProdutos = null;
private ArrayList<HashMap<String, String>> mProdutosList;


public ListaFragment(){}

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) 
{ 
  return inflater.inflate(R.layout.lista_fragment, container, false); 
}

@Override
public void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    //loading the comments via AsyncTask
    new LoadEvents().execute();

  }
  public void updateJSONdata() {

    mProdutosList = new ArrayList<HashMap<String, String>>();


    JSONParser jParser = new JSONParser();

    JSONObject json = jParser.getJSONFromUrl(URL_SELECT);

    try {


        mProdutos = json.getJSONArray(TAG_BEBIDAS);


        for (int i = 0; i < mProdutos.length(); i++) {
            JSONObject c = mProdutos.getJSONObject(i);

            String nome = c.getString(TAG_NOME);
            String descr = c.getString(TAG_DESCR);

            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            map.put(TAG_NOME, nome);
            map.put(TAG_DESCR, descr);

            mProdutosList.add(map);

        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
}
private void updateList() {


ListAdapter adapter = new SimpleAdapter(getActivity(), mProdutosList,
        R.layout.list_item, 
        new String[] { TAG_NOME, TAG_DESCR}, 
        new int[] { R.id.pid, R.id.name});

            setListAdapter(adapter);

            ListView lv = getListView();    
            lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    }            
                });
}

public class LoadEvents extends AsyncTask<Void, Void, Boolean> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(getActivity());
        pDialog.setMessage("Loading Events...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }
    @Override
    protected Boolean doInBackground(Void... arg0) {

        updateJSONdata();
        return null;
    }

    @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);
        pDialog.dismiss();

        updateList();
        }
      }
   }

Logcat error:

    10-22 22:41:40.814: E/AndroidRuntime(2513): FATAL EXCEPTION: main
    10-22 22:41:40.814: E/AndroidRuntime(2513): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.waitersoriginal/com.example.waitersoriginal.BebidaActivity}: android.view.InflateException: Binary XML file line #15: Error inflating class fragment
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.os.Handler.dispatchMessage(Handler.java:99)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.os.Looper.loop(Looper.java:137)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ActivityThread.main(ActivityThread.java:5103)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at java.lang.reflect.Method.invoke(Method.java:525)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at dalvik.system.NativeStart.main(Native Method)
    10-22 22:41:40.814: E/AndroidRuntime(2513): Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class fragment
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.Activity.setContentView(Activity.java:1895)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at com.example.waitersoriginal.BebidaActivity.onCreate(BebidaActivity.java:19)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.Activity.performCreate(Activity.java:5133)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     ... 11 more
    10-22 22:41:40.814: E/AndroidRuntime(2513): Caused by: java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ListFragment.ensureList(ListFragment.java:402)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.ListFragment.onViewCreated(ListFragment.java:203)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1137)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.app.Activity.onCreateView(Activity.java:4746)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
    10-22 22:41:40.814: E/AndroidRuntime(2513):     ... 21 more

Any ideas?

Thanks for all.

EDIT:

lista_fragment.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" >

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>

    </LinearLayout>

EDIT 2:

Logcat error:

10-22 23:46:11.842: W/System.err(2729): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused
10-22 23:46:12.062: W/System.err(2729):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
10-22 23:46:12.192: W/System.err(2729):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
10-22 23:46:12.212: W/System.err(2729):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
10-22 23:46:12.262: W/System.err(2729):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
10-22 23:46:12.292: W/System.err(2729):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
10-22 23:46:12.342: W/System.err(2729):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-22 23:46:12.352: W/System.err(2729):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-22 23:46:12.362: W/System.err(2729):     at com.example.waitersoriginal.JSONParser.getJSONFromUrl(JSONParser.java:30)
10-22 23:46:12.362: W/System.err(2729):     at com.example.waitersoriginal.ListaFragment.updateJSONdata(ListaFragment.java:60)
10-22 23:46:12.392: W/System.err(2729):     at com.example.waitersoriginal.ListaFragment$LoadEvents.doInBackground(ListaFragment.java:122)
10-22 23:46:12.392: W/System.err(2729):     at com.example.waitersoriginal.ListaFragment$LoadEvents.doInBackground(ListaFragment.java:1)
10-22 23:46:12.412: W/System.err(2729):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-22 23:46:12.422: W/System.err(2729):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-22 23:46:12.442: W/System.err(2729):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-22 23:46:12.462: W/System.err(2729):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-22 23:46:12.462: W/System.err(2729):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-22 23:46:12.472: W/System.err(2729):     at java.lang.Thread.run(Thread.java:841)
10-22 23:46:12.492: W/System.err(2729): Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
10-22 23:46:12.512: W/System.err(2729):     at libcore.io.IoBridge.connect(IoBridge.java:114)
10-22 23:46:12.512: W/System.err(2729):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
10-22 23:46:12.512: W/System.err(2729):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
10-22 23:46:12.552: W/System.err(2729):     at java.net.Socket.connect(Socket.java:842)
10-22 23:46:12.562: W/System.err(2729):     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
10-22 23:46:12.562: W/System.err(2729):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
10-22 23:46:12.562: W/System.err(2729):     ... 16 more
10-22 23:46:12.562: W/System.err(2729): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
10-22 23:46:12.592: W/System.err(2729):     at libcore.io.Posix.connect(Native Method)
10-22 23:46:12.652: W/System.err(2729):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
10-22 23:46:12.652: W/System.err(2729):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
10-22 23:46:12.662: W/System.err(2729):     at libcore.io.IoBridge.connect(IoBridge.java:112)
10-22 23:46:12.662: W/System.err(2729):     ... 21 more
10-22 23:46:12.662: E/Buffer Error(2729): Error converting result java.lang.NullPointerException: lock == null
10-22 23:46:12.702: E/JSON Parser(2729): Error parsing data org.json.JSONException: End of input at character 0 of 
10-22 23:46:12.702: W/dalvikvm(2729): threadid=11: thread exiting with uncaught exception (group=0xb2f30648)
10-22 23:46:12.712: E/AndroidRuntime(2729): FATAL EXCEPTION: AsyncTask #1
10-22 23:46:12.712: E/AndroidRuntime(2729): java.lang.RuntimeException: An error occured while executing doInBackground()
10-22 23:46:12.712: E/AndroidRuntime(2729):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at java.lang.Thread.run(Thread.java:841)
10-22 23:46:12.712: E/AndroidRuntime(2729): Caused by: java.lang.NullPointerException
10-22 23:46:12.712: E/AndroidRuntime(2729):     at com.example.waitersoriginal.ListaFragment.updateJSONdata(ListaFragment.java:65)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at com.example.waitersoriginal.ListaFragment$LoadEvents.doInBackground(ListaFragment.java:122)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at com.example.waitersoriginal.ListaFragment$LoadEvents.doInBackground(ListaFragment.java:1)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-22 23:46:12.712: E/AndroidRuntime(2729):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-22 23:46:12.712: E/AndroidRuntime(2729):     ... 4 more
10-22 23:46:13.412: W/EGL_emulation(2729): eglSurfaceAttrib not implemented
10-22 23:46:14.142: E/WindowManager(2729): Activity com.example.waitersoriginal.BebidaActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{b320ffd0 V.E..... R......D 0,0-576,96} that was originally added here
10-22 23:46:14.142: E/WindowManager(2729): android.view.WindowLeaked: Activity com.example.waitersoriginal.BebidaActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{b320ffd0 V.E..... R......D 0,0-576,96} that was originally added here
10-22 23:46:14.142: E/WindowManager(2729):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:345)
10-22 23:46:14.142: E/WindowManager(2729):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)
10-22 23:46:14.142: E/WindowManager(2729):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.Dialog.show(Dialog.java:281)
10-22 23:46:14.142: E/WindowManager(2729):  at com.example.waitersoriginal.ListaFragment$LoadEvents.onPreExecute(ListaFragment.java:117)
10-22 23:46:14.142: E/WindowManager(2729):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
10-22 23:46:14.142: E/WindowManager(2729):  at android.os.AsyncTask.execute(AsyncTask.java:534)
10-22 23:46:14.142: E/WindowManager(2729):  at com.example.waitersoriginal.ListaFragment.onResume(ListaFragment.java:50)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.Fragment.performResume(Fragment.java:1738)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1039)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1850)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.Activity.performResume(Activity.java:5221)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2780)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2819)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2266)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-22 23:46:14.142: E/WindowManager(2729):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 23:46:14.142: E/WindowManager(2729):  at android.os.Looper.loop(Looper.java:137)
10-22 23:46:14.142: E/WindowManager(2729):  at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 23:46:14.142: E/WindowManager(2729):  at java.lang.reflect.Method.invokeNative(Native Method)
10-22 23:46:14.142: E/WindowManager(2729):  at java.lang.reflect.Method.invoke(Method.java:525)
10-22 23:46:14.142: E/WindowManager(2729):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 23:46:14.142: E/WindowManager(2729):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 23:46:14.142: E/WindowManager(2729):  at dalvik.system.NativeStart.main(Native Method)

解决方案

You have mentioned your class to be ListFragment, which means your xml should have only a listview, where as you have a LinearLayout and a ListView inside it. Your xml should be something like this...

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" /> 

if you do not wish to change your xml, change your class to a Fragment

public class ListaFragment extends Fragment 

Manually find the listview

    ListView listView;
    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState){
            ctx=getActivity();
            LayoutInflater m_inflater = LayoutInflater.from(getActivity());
            rootView = m_inflater.inflate(R.layout.lista_fragment, null);
listView=rootView.findViewById(R.id.listView1);
            return rootView;
    }

and take it from there.

这篇关于试图从片段解析JSON文件列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆