2013-02-28 87 views
0

我檢查了周圍環境,並且我無法完全找到可以幫助我完成自己想要完成的任務的東西。在我的Android應用程序中,我希望能夠向服務器請求某些數據,當返回數據時,我想填充滾動視圖,因爲在一個顯示中有太多內容。我這樣做的原因是因爲數據會經常更新以使我不斷更新應用程序(想像中的twitter)。我已經構建了XML linearlayout,它將填充滾動視圖,我只需要找到構建視圖的最佳方式。使用服務器響應中的按鈕創建Android佈局

我已經頭腦風暴了幾種方法,這可能是可能的,並且如果可能的話,我正在接觸這些方法。

  1. 傳遞數據作爲XML飼料 - 我覺得這將使我通過所有從服務器反饋的數據運行,並使用XML標記將數據內容並放入佈局中的適當位置。然後建立下一個佈局並從那裏開始。

  2. 從服務器傳遞完整的佈局XML - 這可能會構建佈局,但我覺得會阻止我在佈局上觸發onclick上的按鈕,因爲我正在傳遞所有數據。我知道有些匿名聽衆可以完成這項工作,但我不太清楚在這種情況下我該如何觸發它。

我有第三個,但它在這個時候逃脫了我。任何幫助表示讚賞。

回答

0

對不起,我走在佈局文件很長時間以來,我一直忙於其他事情,無法編碼。這是非常好的,但只有當我在建設按鈕,我一直沿着。由於我正在充氣佈局,所以我需要選擇一個預先存在的按鈕。

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

之後,我可以建立onclicklistener然後添加新的視圖到佈局。感謝您的幫助!你的腳本指出了正確的方向,以確定需要完成的工作。

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(); 
      } 


     } 

我已經創建了我已經加了LinearLayout中與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> 
+0

我在哪裏使用電視[i] .setText(jsonArray.getJSONObject(i).getString(「name」));是從XML提要獲取結果? – TheHamstring 2013-02-28 11:24:55

+0

在我的示例中,我將名稱設置爲從上面的url返回的JSON數據的按鈕......您可以解析您的XML提要,並且可以設置該按鈕的任何文本。 – Ajit 2013-03-01 05:18:15

+0

當我放入第一個按鈕創建時,警告「參數的左側必須是變量」 Button purch [] = new Button [tokens.length();我++]; 但令牌是我的變量,我從稍後讀取數據填充我的列表視圖。 另外我想定位一個已經存在於我的佈局中的按鈕,這個按鈕會自動定位該按鈕,還是我需要以某種方式指定它。 – TheHamstring 2013-03-29 11:25:07