我有當即時試圖從我的數據庫 錯誤顯示在列表視圖數據的問題是「致命異常:主 java.lang.ArrayIndexOutOfBoundsException:長度= 4;索引= 4「 。我不明白它是什麼。致命異常:主java.lang.ArrayIndexOutOfBoundsException:
我希望有人能幫助我 感謝
這是我的代碼
公共類FragmentMaintain擴展片段{
ListView list; TextView mid; TextView pid; TextView status; TextView description; TextView note; ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>(); //URL to get JSON Array private static String url = "http://10.0.2.2/skripsi/json/testing.php"; //JSON Node Names private static final String TAG_OS = "maintenance"; private static final String TAG_MID = "mid"; private static final String TAG_PID = "pid"; private static final String TAG_STATUS = "status"; private static final String TAG_DESCRIPTION = "description"; private static final String TAG_NOTE = "note"; JSONArray maintenance = null; Button Addnotedata; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d("ZZZ", "ada di oncreateView maintain"); super.onCreate(savedInstanceState); View rootView = inflater.inflate(R.layout.fragment_maintain, container, false); new JSONParse().execute(); return rootView; } private class JSONParse extends AsyncTask<String, String, JSONObject> { private ProgressDialog pDialog; @Override protected void onPreExecute() { super.onPreExecute(); mid = (TextView) getActivity().findViewById(R.id.mid); pid = (TextView) getActivity().findViewById(R.id.pid); status = (TextView) getActivity().findViewById(R.id.status); description = (TextView) getActivity().findViewById(R.id.description); note = (TextView) getActivity().findViewById(R.id.note); pDialog = new ProgressDialog(getActivity()); pDialog.setMessage("Getting Data ..."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } @Override protected JSONObject doInBackground(String... args) { //String pid = getArguments().getString("pid"); //List<NameValuePair> params = new ArrayList<NameValuePair>(); //params.add(new BasicNameValuePair("pid", pid)); JSONParser jParser = new JSONParser(); JSONObject json = jParser.makeHttpRequestWithoutParams(url); //Log.d("TES", pid+", "+ json.toString()); return json; } @Override protected void onPostExecute(JSONObject json) { pDialog.dismiss(); try { // Getting JSON Array from URL maintenance = json.getJSONArray(TAG_OS); for(int i = 0; i < maintenance.length(); i++){ JSONObject c = maintenance.getJSONObject(i); // Storing JSON item in a Variable String mid = c.getString(TAG_MID); String pid = c.getString(TAG_PID); String status = c.getString(TAG_STATUS); String description = c.getString(TAG_DESCRIPTION); String note = c.getString(TAG_NOTE); // Adding value HashMap key => value HashMap<String, String> map = new HashMap<String, String>(); map.put(TAG_MID, mid); map.put(TAG_PID, pid); map.put(TAG_STATUS, status); map.put(TAG_DESCRIPTION, description); map.put(TAG_NOTE, note); oslist.add(map); list=(ListView) getActivity().findViewById(R.id.list); ListAdapter adapter = new SimpleAdapter(getActivity(), oslist, R.layout.list_maintain, new String[] { TAG_MID,TAG_PID, TAG_STATUS, TAG_NOTE}, new int[] { R.id.mid,R.id.pid, R.id.status, R.id.description, R.id.note}); list.setAdapter(adapter); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getActivity(), "You Clicked at " + oslist.get(+position).get("pid"), Toast.LENGTH_SHORT).show(); } }); } } catch (JSONException e) { e.printStackTrace(); } } }
}
,這我的logcat
10-10 00:10:50.575 2004年至2004年/ com.example.blackcustomzier.skripsi E/AndroidRuntime:致命異常:主 java.lang.ArrayIndexOutOfBoundsException:長度= 4;在android.widget.SimpleAdapter.getView(SimpleAdapter.java:114)上的android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:126) 索引= 4 ) 在android.widget.AbsListView.obtainView(AbsListView.java:2177) 在android.widget.ListView.makeAndAddView(ListView.java:1840) 在android.widget.ListView.fillDown(ListView.java:675) at android.widget.ListView.fillFromTop(ListView.java:736) at android.widget.ListView.layoutChildren(ListView.java:1655) at android.widget.AbsListView.onLayout(AbsListView.java:2012) at android .view.View.layout(View.java:14289) at android.view.ViewGroup.layout(ViewGroup.java:4562) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525) at android.view.View.Group.layout(ViewGroup.java:4562) 在android上。android.view.View.layout(View.java:14289) android.view.Lineout.onLayout(LinearLayout.java:1434) widget.FrameLayout.onLayout(FrameLayout.java:448) 在android.view.View.layout(View.java:14289)
看看你的適配器實例。數據鍵和視圖ID的數組大小不同。 – 2014-10-10 04:27:21
什麼是oslist.get中的+位置(+ position).get(「pid」); ?和你的字符串[]和int []不匹配 – 2014-10-10 04:27:27
'FragmentMaintain' * *沒有列在你的堆棧跟蹤中。您需要發佈導致問題的代碼。 – jww 2014-10-10 04:33:16