Java 如何在线性布局中添加jsonarray响应?
我得到了一个json响应,其中我得到了jsonObject和jsonArray。我成功地为jsonObject设置了值,但对于JsonArray,我为每个对象都设置了两个值作为que ans ans。例如:Java 如何在线性布局中添加jsonarray响应?,java,android,Java,Android,我得到了一个json响应,其中我得到了jsonObject和jsonArray。我成功地为jsonObject设置了值,但对于JsonArray,我为每个对象都设置了两个值作为que ans ans。例如: "question": [ { "ans": "test", "que": "What is your name" }, {
"question": [
{
"ans": "test",
"que": "What is your name"
},
{
"ans": "25-30",
"que": "Age"
}
]
这是jsonObject中的jsonarray。现在我想在文本框中设置que和ans。请注意,问题的数量不是固定的,它们可以是12个或更多或更少,具体取决于API
我的问题是如何设置布局充气机或类似的问题?
提前感谢:)试试这种方法,希望这能帮助您解决问题。 活动\u main.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/lnrQuestionContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txtQuestion"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtAnswer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"/>
</LinearLayout>
question.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/lnrQuestionContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txtQuestion"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtAnswer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends ActionBarActivity {
private LinearLayout lnrQuestionContainer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lnrQuestionContainer =(LinearLayout) findViewById(R.id.lnrQuestionContainer);
try{
JSONObject jsonObject = new JSONObject("{\"question\":[{\"ans\":\"test\",\"que\":\"What is your name\"},{\"ans\":\"25-30\",\"que\":\"Age\"}]}");
JSONArray questionJsonArray = jsonObject.getJSONArray("question");
for(int i=0;i<questionJsonArray.length();i++){
View view = LayoutInflater.from(this).inflate(R.layout.question,null);
TextView txtQuestion = (TextView) view.findViewById(R.id.txtQuestion);
TextView txtAnswer = (TextView) view.findViewById(R.id.txtAnswer);
txtQuestion.setText("Question "+(i+1)+" : "+questionJsonArray.getJSONObject(i).getString("que"));
txtAnswer.setText("Answer "+(i+1)+" : "+questionJsonArray.getJSONObject(i).getString("ans"));
lnrQuestionContainer.addView(view);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
公共类MainActivity扩展了ActionBarActivity{
专用线路布局LNR集装箱;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lnrQuestionContainer=(LinearLayout)findViewById(R.id.lnrQuestionContainer);
试一试{
JSONObject JSONObject=新的JSONObject(“{”问题\“:[{“ans\”:“test\”,“que\”:“你叫什么名字\“},{“ans\”:“25-30\”,“que\”:“年龄\“}”);
JSONArray questionJsonArray=jsonObject.getJSONArray(“问题”);
对于(int i=0;i您需要像这样使用膨胀:保留一个item.xml,它将容纳2个文本视图(或根据您的需要编辑文本)
item.xml:
<RelativeLayout
android:id="@+id/item_row"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/que"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/ans"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />
</RelativeLayout>
现在在您的代码中:
您需要在一个循环中为JSONArray中的任意多个项膨胀该item.xml。因此,首先解析JSONArray并获得问题、答案对的数组列表:
ArrayList<String[]> myArr = new ArrayList<String[]>();
for (int i=0; i < myJSONArray.length(); i++) {
JSONObject j = myJSONArray.getJSONObject(i);
String[] t = {j.getString("que"),j.getString("ans")};
myArr.add[t];
}
ArrayList myArr=new ArrayList();
for(int i=0;i
将此信息传递给您的活动
现在,您需要遍历ArrayList并展开布局,在map中使用值填充TextView,并在父布局中添加展开的视图:
RelativeLayout container = (RelativeLayout)findViewById(R.id.mylayout); //this will be your container layout
for (int i = 0; i < secQAArr.size(); i++){
View item = getLayoutInflater().inflate(R.layout.item, null);
TextView tQue = (TextView) findViewById(R.id.que);
que.seText(secQAArr.get(i)[0]);
TextView tAns = (TextView) findViewById(R.id.ans);
que.seText(secQAArr.get(i)[1]);
container.addView(item);
}
RelativeLayout container=(RelativeLayout)findViewById(R.id.mylayout);//这将是您的容器布局
对于(int i=0;i
希望有帮助。那么,你想在列表中显示该信息吗?我正在努力动态添加线性布局,在ListView中有它的行。你能帮我吗??