来自Android {J}的动态填充字段

时间:2017-04-05 12:18:47

标签: java android json

问候其他程序员!

我正在构建一个移动应用程序,我从API获取JSON数据,然后使用bundle将其传输到下一个活动(所有这些都完美无缺)。在第二个活动中,传输的 JSON 数据(以字符串的形式)应该用于动态填充字段。

现在我要做的是我尝试从 JSON 数据中提取公司名称,将它们动态填充到按钮中并使用其余的 JSON 数据(如电话号码,电子邮件等)仅在单击按钮(其上包含公司名称)时显示信息。 理想情况下我会想要使用手风琴按钮,但经过一些研究后显然它无法在Android中轻松实现。所以我想在使用一个带有公司名称的按钮后弹出一个对话框(包含剩下的信息)。

我不知道从哪里开始对于按钮的动态填充以及来自 JSON 数据的对话框应该是诚实的,所以我希望也许来自这个神奇社区的人可以给我一些指示?

我会非常感谢任何帮助!!

谢谢

4 个答案:

答案 0 :(得分:0)

首先,您需要解析JSON - 将其转换为java对象。 您可以使用GSON库,也可以使用JSONObject类自行完成。

它很简单,如果您使用Retrofit库进行网络化,很有可能它会为您完成。

获得java模型 - 基于JSON创建的对象后,只需将值分配给控件即可。顺便说一句,如果您使用按钮列表,最好使用RecyclerView创建列表。

您可以在此处找到详细信息:

GSON library Retrofit

答案 1 :(得分:0)

为公司创建一个班级,其成员包括姓名,地址,电话号码,电子邮件等..... 从json数据创建Company类的对象列表..

Eg : 
List<Company> companies  =  new ArrayList<>();
jsonArray = new JsonArray(jsonInstring);
for(int i=0;i<jsonArray.length();i++){
jsonObject = jsonArray.getJsonObject(i);
company = new Company(jsonObject.getString("name"),......);
companies.add(company);
}

现在将这些数据填充到列表视图或recyclerview,然后单击项目传递该对象公司并创建一个对话框...并在该对话框中设置从该对象到视图的值。

答案 2 :(得分:0)

  1. 使用ID,名称,号码和其他字段创建Comapny Bean
  2. 解析您的json并创建公司Bean列表为List<Company> companyList
  3. 在activity_main.xml文件中,创建一个用于添加动态视图的containerLayout

    <LinearLayout android:id="@+id/containerLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"/>

  4. 创建button_layout.xml

    <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" />

  5. 5.在你的活动中调用addButton方法

    private void addButton(){
            containerLayout = (LinearLayout)findViewById(R.id.containerLayout);
            for(int i=0; i<companyList.size(); i++){
                containerLayout.addView(generateButton(companyList.get(i)));
            }
        }
    
        private Button generateButton(Company company) {
            Button companyButton = (Button)getLayoutInflater().inflate(R.layout.button_layout, null);
            companyButton.setText(company.getName());
            companyButton.setTag(company);
            companyButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showPopup((Company)v.getTag()); //other details popup
                }
            });
            return companyButton;
        }
    

答案 3 :(得分:0)

如果您想将JSON响应转换为Java类对象,那么JAKSON API将非常适合您的任务。

您可以通过这种方式将JSON转换为任何java对象。

    ObjectMapper mapper = new ObjectMapper();
   //Object to JSON in file
    User user = mapper.readValue(new File("c:\\user.json"), User.class); 

请按照推荐URL了解详情。

希望这会对你有所帮助。