如何在android中使用Json动态创建布局并从中获取价值?这是Json

时间:2016-11-10 06:53:55

标签: android json android-layout

{
  layout:[
   {
    tag :"edittext",
    name :"Name",
    hint :"Type your name here"
   },
   {
    tag :"checkbox",
    name :"Is married",
    hint :""
   },
   {
    tag :"button",
    name :"Submit",
    hint :""
   }
 ]
}

我正在描述我想要的是什么。首先,上面的json每次都会改变。结构将相同,只是标记,名称和提示值将改变。现在上面的jsonarray有三个jsonobject。它可能是任何数字(4/5/6任意数量的jsonobject)。任何人都可以建议我如何解决这个问题吗?谢谢

2 个答案:

答案 0 :(得分:0)

最好将你的问题分成很小的部分,所以这里有我的

  1. 解析JSON并获取其值:我建议您关注此How to parse JSON in Android此链接,您将拥有json的所有内容。
  2. 检查控件是否为EditText或Button或其他任何东西:我建议您使用switch case以获得更好的编码结构

    switch (tag ){
        case "edittext":
            //add edittext
            break;
        case "button":
            //add button
            break;
    }
    
  3. 按照此链接动态添加控件

    Generating Edit Text Programatically in android
    Add button to a layout programmatically
    How to add checkboxes dynamically in android

答案 1 :(得分:0)

您可以根据jsonarray的大小创建布局。

JSONArray jArray = jObject.getJSONArray("layout");
    layout = (LinearLayout) findViewById(R.id.statsviewlayout);

    for (int i=0; i < jArray.length(); i++)
    {
        try {
            JSONObject oneObject = jArray.getJSONObject(i);
            // Pulling items from the array
            String tag = oneObject.getString("tag");
            String name= oneObject.getString("name");
            String hint= oneObject.getString("hint");
            Button button = new Button(this);
            button.setText(name);
            button.setLayoutParams(new LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
        layout.addView(buyButton);

        } catch (JSONException e) {
            // Oops
        }
    }