来自 'for loop' 的数据排列错误

Wrong arrangement of data from 'for loop'

我有以下代码。我动态添加了我的文本字段。我在 Genymotion 5.0 (Google Nexus 5) 中显示了我想要的结果,但是当我 运行 我的应用程序在其他 devices/actual 设备中时,文本字段被打乱。请帮助,在此先感谢。

JSONObject jsonObject = new JSONObject(question.getSublabels()); final EditText[] editTextSublabels = new EditText[jsonObject.length()]; for (int i = 0; i < jsonObject.length(); i++) { String names = jsonObject.names().get(i).toString(); editTextSublabels[i] = (EditText) LayoutInflater.from(activity).inflate(R.layout.sublabels, null); editTextSublabels[i].setId(i); editTextSublabels[i].setHint(jsonObject.getString(names)); sublabelsContainers.addView(editTextSublabels[i], params); }

一个JSON对象是一种地图。它不保留顺序。如果要使用 JSON 保留排序,则需要使用数组(并匹配 Java 中的 JSONArray)。

您不能也不应该依赖 JSON 对象中元素的顺序。 在JSON中,一个对象是这样定义的:

An object is an unordered set of name/value pairs.

如果你想保留顺序,你需要重新定义你的数据结构或者把它放在一个jsonarray里

参见 http://www.json.org