Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SimpleAdaptor NPE_Android_Json_Listview_Hashmap_Android Inflate - Fatal编程技术网

Android SimpleAdaptor NPE

Android SimpleAdaptor NPE,android,json,listview,hashmap,android-inflate,Android,Json,Listview,Hashmap,Android Inflate,我在将JSON对象数据膨胀到ListView片段中时遇到问题 数据从数据库中提取,并通过PHP转换为JSON数组,然后转换为JSON对象。一切都在进行中(请参阅代码中的内联日志.i() 我获得的NPE如下所示: threadid=1:线程退出时出现未捕获异常(组=0x40a781f8) 致命异常:位于的主java.lang.NullPointerException simpledapter.(simpledapter.java:85)位于 com.andaero.app.NavigationLi

我在将JSON对象数据膨胀到ListView片段中时遇到问题

数据从数据库中提取,并通过PHP转换为JSON数组,然后转换为JSON对象。一切都在进行中(请参阅代码中的内联日志.i()

我获得的NPE如下所示:

threadid=1:线程退出时出现未捕获异常(组=0x40a781f8) 致命异常:位于的主java.lang.NullPointerException simpledapter.(simpledapter.java:85)位于 com.andaero.app.NavigationListFragment$1.callback(NavigationListFragment.java:97) 在 com.andaero.app.NavigationListFragment$1.callback(NavigationListFragment.java:1) 在 com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:440) 在 com.androidquery.callback.AbstractAjaxCallback.afterWork(AbstractAjaxCallback.java:1010) 在 com.androidquery.callback.AbstractAjaxCallback.run(AbstractAjaxCallback.java:804) 位于android.os.Handler.handleCallback(Handler.java:605) dispatchMessage(Handler.java:92)位于 Looper.loop(Looper.java:137)位于 main(ActivityThread.java:4424)位于 java.lang.reflect.Method.Invokenactive(本机方法)位于 java.lang.reflect.Method.invoke(Method.java:511)位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) dalvik.system.NativeStart.main(本机方法)

我不确定我做错了什么。请在你的答案中说明正确的方法,以便我能更好地理解并从中学习。坦克斯

public class NavigationListFragment extends ListFragment {
    Context context;
    private Activity c;
    final AQuery aq = new AQuery(c);
    private static String url = "http://192.168.1.17/Andaero/php/regulatory_list.php";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.listview, container, false);
        Log.i("NavigationListFragment", "ListView Inflated!!");
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        // AsyncTasks.getJSONArrays(context);// asynchronous task for getting
        // JSONarray
        aq.ajax(url, JSONArray.class, new AjaxCallback<JSONArray>() {
            // JSON Node names
            private static final String TAG_ID = "_id";
            private static final String TAG_LABEL = "label";
            private static final String TAG_TITLE = "title";
            private static final String TAG_DISCR = "description";
            private static final String TAG_GO2URL = "gotoURL";

            public void callback(String url, JSONArray json, AjaxStatus status) {
                if (json != null) {
                    // NavigationListFragment.jsonListCallback(json);
                    Log.i("NavigationListFragment", "Caught JSON: " + json.toString());
                    // Hashmap for ListView
                    List<HashMap<String, String>> mList = new ArrayList<HashMap<String, String>>();
                    try {
                        // Parse the string to a JSON object
                        for (int i = 0; i < json.length(); i++) {
                            JSONObject json_data = json.getJSONObject(i);

                            // Storing each json item in variable
                            String id = json_data.getString(TAG_ID);
                            String label = json_data.getString(TAG_LABEL);
                            String title = json_data.getString(TAG_TITLE);
                            String description = json_data.getString(TAG_DISCR);
                            String gotoURL = json_data.getString(TAG_GO2URL);

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

                            // adding each child node to HashMap key => value
                            map.put(TAG_ID, id);
                            map.put(TAG_LABEL, label);
                            map.put(TAG_TITLE, title);
                            map.put(TAG_DISCR, description);
                            map.put(TAG_GO2URL, gotoURL);

                            // adding HashList to ArrayList
                            mList.add(map);
                            Log.i("NavigationListFragment", "Hash: " + map);
                        }
                    } catch (JSONException e) {
                        Log.e("log_tag", "Error parsing data " + e.toString());
                    }

                    // create the grid item mapping
                    String[] from = new String[] {TAG_LABEL, TAG_TITLE, TAG_DISCR, TAG_GO2URL};
                    int[] to = new int[] { R.id.listLabel, R.id.listTitle, R.id.listDiscription, R.id.dummy };

                    // Updating parsed JSON data into ListView
                    SimpleAdapter adapter = new SimpleAdapter(c, mList, R.layout.list_item, from, to);??<--THIS IS LINE 97 

                    getListView().setAdapter(adapter);

                    // selecting single ListView item
                    ListView lv = getListView();

                    // Launching new screen on Selecting Single ListItem
                    lv.setOnItemClickListener(new OnItemClickListener() {

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

                }
                // Log any network/JSON Errors
                switch (status.getCode()) {
                    case AjaxStatus.TRANSFORM_ERROR :
                        Log.i("GetJSONArray", "TRANSFORM_ERROR");
                        break;
                    case AjaxStatus.NETWORK_ERROR :
                        Log.i("GetJSONArray", "NETWORK_ERROR");
                        // TODO Create Alert Dialog
                    case AjaxStatus.AUTH_ERROR :
                        Log.i("GetJSONArray", "AUTH_ERROR");
                        break;
                }
            }
        });

    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        // TODO
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        // TODO
    }
}
公共类NavigationListFragment扩展ListFragment{
语境;
私人活动c;
最终水道aq=新水道(c);
专用静态字符串url=”http://192.168.1.17/Andaero/php/regulatory_list.php";
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
最终视图=充气机。充气(R.layout.listview,容器,错误);
Log.i(“NavigationListFragment”,“ListView!!”;
返回视图;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
//AsyncTasks.getJSONArrays(上下文);//用于获取
//杰索纳雷
ajax(url,JSONArray.class,新的AjaxCallback(){
//JSON节点名称
私有静态最终字符串标记_ID=“_ID”;
私有静态最终字符串标记\u LABEL=“LABEL”;
私有静态最终字符串标记_TITLE=“TITLE”;
私有静态最终字符串标记\u DISCR=“description”;
私有静态最终字符串标记_GO2URL=“gotour”;
公共无效回调(字符串url、JSONArray json、AjaxStatus状态){
if(json!=null){
//NavigationListFragment.jsonListCallback(json);
i(“NavigationListFragment”,“捕获的JSON:+JSON.toString());
//ListView的Hashmap
List mList=new ArrayList();
试一试{
//将字符串解析为JSON对象
for(int i=0;ivalue
地图放置(标签标识,标识);
地图放置(标签、标签);
地图放置(标签标题、标题);
地图放置(标签、描述);
map.put(TAG_GO2URL,gotour);
//将哈希列表添加到ArrayList
mList.add(地图);
Log.i(“NavigationListFragment”,“Hash:+map”);
}
}捕获(JSONException e){
Log.e(“Log_标记”,“错误解析数据”+e.toString());
}
//创建网格项映射
String[]from=新字符串[]{TAG_LABEL,TAG_TITLE,TAG_DISCR,TAG_GO2URL};
int[]to=newint[]{R.id.listLabel,R.id.listTitle,R.id.ListDescription,R.id.dummy};
//将解析的JSON数据更新到ListView中

simpledapter adapter=新的simpledapter(c,mList,R.layout.list_项,from,to);?您的问题的答案可能在这里-> 因为这似乎是SimpleAdapter实现中的一个问题。

I

需要:

SimpleAdapter adapter = new SimpleAdapter(getActivity(), mList, R.layout.list_item, from, to);

我试了一下,但是我得到了相同的NPE。请看我的Q中的编辑/更改。
SimpleAdapter adapter = new SimpleAdapter(getActivity(), mList, R.layout.list_item, from, to);