내 JSON 데이터 Object를 listView 조각에 바인딩 할 때 문제가 있습니다. 내 간단한 어댑터에 바인딩하는 100 줄에 NPE가 있습니다. 나는 이것에 대해 여러 가지 방법을 시도했지만 성공하지 못했습니다. the docs에 따르면 :조각에 ListView 개체를 바인딩하는 방법?
당신은 어댑터와 목록을 연결하는 ListFragment.setListAdapter()를 사용해야합니다. ListView.setAdapter()를 직접 호출하지 마십시오. 그렇지 않으면 중요한 초기화를 건너 뜁니다.
나는 그것이 내 문제이지만 내 코드를 수정하는 방법을 모르겠다. 아래는 NPE와 나의 활동입니다. 주요 자바 : 스레드 캐치되지 않는 예외 (그룹 = 0x40a781f8) 치명적인 예외로 종료 : 내가 가서 내가
threadid = 1 .... 배우고 있기 때문에 어떤 도움, esp는 몇 가지 코드 예제를 이해할 수있을 것이다하시기 바랍니다. com.andaero.app.NavigationListFragment $ 1.callback에서 com.andaero.app.NavigationListFragment의 $의 1.callback (NavigationListFragment.java:100) 에서 android.widget.SimpleAdapter. (SimpleAdapter.java:85)에서 lang.NullPointerException (NavigationListFragment.java:1) at com.androidquery.callback.AbstractAjaxCallback.callback (AbstractAjaxCallback.java:440) at android.os.Handler.handleCallback에서 com.androidquery.callback.AbstractAjaxCallback.afterWork com.androidquery.callback.AbstractAjaxCallback.run (AbstractAjaxCallback.java:804)에서 (AbstractAjaxCallback.java:1010) (Handler.java:605) at android.os.Handler.dispatchMessage (Handler.java:92) at android.os.Looper.loop (Looper.java:137) at android.app.ActivityThread.main (ActivityThread.java:4424) at 의 java.lang.reflect.Method.invokeNative (네이티브 메소드) 의 java.lang.reflect.Method.invoke (Method.java:511) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. java : 787) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:554) d alvik.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
ArrayList<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 list 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);//<--NPE IS HERE
setListAdapter(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;
}
}
});
}
}