来自' for循环的错误数据排列'

时间:2015-01-06 06:50:53

标签: android for-loop

我有以下代码。我动态添加了我的文本字段。我想要的结果显示在Genymotion 5.0(谷歌Nexus 5),但当我在其他设备/实际设备中运行我的应用程序时,文本字段被洗牌。请帮助,提前致谢。

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); }

Result in Devices

2 个答案:

答案 0 :(得分:3)

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

  

对象是一组无序的名称/值对。

如果要保留订单,则需要重新定义数据结构或将其放在jsonarray中

请参阅http://www.json.org

答案 1 :(得分:1)

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