问候其他程序员!
我正在构建一个移动应用程序,我从API获取JSON数据,然后使用bundle将其传输到下一个活动(所有这些都完美无缺)。在第二个活动中,传输的 JSON 数据(以字符串的形式)应该用于动态填充字段。
现在我要做的是我尝试从 JSON 数据中提取公司名称,将它们动态填充到按钮中并使用其余的 JSON 数据(如电话号码,电子邮件等)仅在单击按钮(其上包含公司名称)时显示信息。 理想情况下我会想要使用手风琴按钮,但经过一些研究后显然它无法在Android中轻松实现。所以我想在使用一个带有公司名称的按钮后弹出一个对话框(包含剩下的信息)。
我不知道从哪里开始对于按钮的动态填充以及来自 JSON 数据的对话框应该是诚实的,所以我希望也许来自这个神奇社区的人可以给我一些指示?
我会非常感谢任何帮助!!
谢谢
答案 0 :(得分:0)
首先,您需要解析JSON - 将其转换为java对象。 您可以使用GSON库,也可以使用JSONObject类自行完成。
它很简单,如果您使用Retrofit库进行网络化,很有可能它会为您完成。
获得java模型 - 基于JSON创建的对象后,只需将值分配给控件即可。顺便说一句,如果您使用按钮列表,最好使用RecyclerView创建列表。
您可以在此处找到详细信息:
答案 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)
List<Company> companyList
在activity_main.xml文件中,创建一个用于添加动态视图的containerLayout
<LinearLayout
android:id="@+id/containerLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
创建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.在你的活动中调用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了解详情。
希望这会对你有所帮助。