我有以下代码。我动态添加了我的文本字段。我想要的结果显示在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);
}
答案 0 :(得分:3)
您不能也不应该依赖JSON对象中元素的排序。 在JSON中,定义了一个对象:
对象是一组无序的名称/值对。
如果要保留订单,则需要重新定义数据结构或将其放在jsonarray中
答案 1 :(得分:1)
JSONObject是一种地图。它不保留排序。如果要使用JSON保留排序,则需要使用数组(并在Java中匹配JSONArray
)。