Android SimpleAdaptor NPE
我在将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(本机方法) 我不确定我做错了什么。请在你的答案中说明正确的方法,以便我能更好地理解并从中学习。坦克斯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
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);