0

我四处查看,但我永远找不到能帮助我完成我想要完成的事情的东西。在我的 Android 应用程序中,我希望能够向服务器请求一些数据,当返回该数据时,我想填充一个滚动视图,因为有太多内容无法容纳在一个显示器中。我这样做的原因是因为数据更新太频繁,以至于我无法持续更新应用程序(想象一下 twitter)。我已经构建了将填充滚动视图的 XML 线性布局,我只需要找到构建视图的最佳方法。

我已经集思广益了一些可行的方法,如果可能的话,我正在寻找最实用的方法。

  1. 将数据作为 XML 提要传递 - 我觉得这将允许我遍历从服务器提供的所有数据,并使用 XML 标签拉取内容并放置到布局中的适当位置。然后构建下一个布局并从那里开始。

  2. 从服务器传递完整的布局 XML - 这可以构建布局,但我觉得会阻止我在布局上制作按钮,这将在我传递所有数据时触发 onclick 设置。我知道有匿名听众可以完成这项工作,但我不太确定在这种情况下如何让它触发。

我有第三个,但此时它已经逃脱了我。任何帮助表示赞赏。

4

2 回答 2

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 的线性布局

main.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>
于 2013-02-28T06:01:49.663 回答
0

很抱歉花了这么长时间才回复,我一直忙于其他事情,无法编码。这真的很好,但前提是我正在构建按钮。由于我正在扩展布局,因此我需要通过选择一个预先存在的按钮来选择它。

按钮 thisbutton = (Button)findViewById(R.id.buttonid);

在此之后,我可以构建 onclicklistener,然后将新视图添加到布局中。不过感谢您的帮助!您的脚本指出了正确的方向,以确定需要做什么。!

于 2013-04-11T12:35:52.820 回答