我在周围检查过,而且我找不到能帮助我实现目标的东西。在我的Android应用程序中,我希望能够向服务器请求一些数据,当返回该数据时,我想填充一个scrollview,因为在一个显示中有太多不适合。我这样做的原因是因为数据会经常更新,以便我不断更新应用程序(想象力推特)。我已经构建了XML linearlayout,它将填充滚动视图,我只需要找到构建View的最佳方法。
我已经集思广益了一些可行的方法,如果可能的话,我会伸手去拿最合适的方法。
将数据作为XML提要传递 - 我觉得这可以让我浏览从服务器提供的所有数据,并使用XML标记将内容拉到布局中的适当位置。然后构建下一个布局并从那里开始。
从服务器传递完整的布局XML - 这可以构建布局但我觉得会阻止我在布局上制作按钮,因为我传递所有数据时会触发onclick设置。我知道有些匿名听众可以胜任这项工作,但我不太确定在这种情况下如何让它触发。
我有三分之一,但此时它已经逃过了我。任何帮助表示赞赏。
答案 0 :(得分:4)
试试这个,
public void listButtons() {
LinearLayout layout = (LinearLayout)findViewById(R.id.button_list);
String http_url = "http://example.com/demo";
try {
URL url = new URL(http_url);
HttpURLConnection con = HttpURLConnection)url.openConnection();
if(con!=null){
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String data=br.readLine();
JSONArray jsonArray=null;
jsonArray = new JSONArray(data);
Button tv[] = new Button[jsonArray.length()];
for(int i=0;i<jsonArray.length();i++)
{
tv[i] = new Button(this);
tv[i].setText(jsonArray.getJSONObject(i).getString("name"));
tv[i].setGravity(Gravity.CENTER_HORIZONTAL);
tv[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//add your code here
}
});
layout.addView(tv[i]);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我创建了一个布局xml文件,其中添加了一个id为button_list
的linearlayoutmain.xml文件 -
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".ResearchActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="55dp"
android:orientation="vertical"
android:id="@+id/button_list"
>
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
很抱歉在这个回复中花了这么长时间,我一直忙于其他事情并且无法编码。这真的很好,但只有当我按下时才构建按钮。由于我正在给布局充气,我需要通过选择它来选择一个预先存在的按钮。
按钮thisbutton =(按钮)findViewById(R.id.buttonid);
在此之后,我可以构建onclicklistener,然后将新视图添加到布局中。谢谢你的帮助!您的脚本指向了正确的方向,以确定需要完成的工作。!