0

나는 주위를 둘러 보았고, 내가 이루고자하는 것을 돕는 뭔가를 찾을 수 없다. 내 안드로이드 애플 리케이션에서 나는 데이터가 반환 될 때 서버에 요청을 할 수 있기를 원한다. 하나의 디스플레이에 너무 많이 들어 맞기 때문에 scrollview를 채울 수있다. 내가이 일을하는 이유는 데이터가 너무 자주 업데이트되어 앱의 지속적인 업데이트 (상상의 트위터)를하기 때문입니다. 이미 뷰를 빌드하는 가장 좋은 방법을 찾으려면 스크롤 뷰를 채울 XML 선형 레이아웃을 작성했습니다.서버 응답의 버튼으로 안드로이드 레이아웃 만들기

나는 이것이 가능할 수있는 몇 가지 방법에 대해 브레인 스토밍을했고 가능하면 가장 실용적인 방법을 찾고 있습니다. 나는이 날 서버에서 공급되는 모든 데이터를 실행할 수 있도록 할 느끼고 XML 태그의 내용을 끌어 레이아웃의 적절한 위치에 배치하여 -

  1. XML 피드로 데이터를 전달 . 그런 다음 다음 레이아웃을 만들고 거기에서 이동하십시오.

  2. 서버에서 전체 레이아웃 XML 전달 - 레이아웃을 작성할 수 있지만 모든 데이터를 전달할 때 설정에서 onclick을 트리거하는 버튼을 레이아웃에서 만들지 못하게한다고 생각합니다. 일을 할 수있는 익명의 청취자가 있다는 것을 알고 있지만,이 경우 어떻게 작동시킬 수 있는지 잘 모르겠습니다.

나는 세 번째지만 지금은 나를 피했다. 어떤 도움을 주셔서 감사합니다. 내가 복용에 대한

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

죄송 아이디 button_list와의 LinearLayout을 추가하는 레이아웃 XML 파일을 만든

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


     } 

4

이 시도, 이 응답에서 오랫동안 나는 다른 일에 바빴고 코드를 작성할 수 없었습니다. 그게 정말 좋았지 만 내가 가면서 버튼을 만들었을 때만. 레이아웃을 부 풀리기 때문에 기존 버튼을 그대로 선택하여 선택해야합니다.

버튼 thisbutton = (버튼) findViewById (R.id.buttonid);

그런 다음 onclicklistener를 빌드 한 다음 레이아웃에 새보기를 추가 할 수 있습니다. 그래도 도와 ​​줘서 고마워! 스크립트는 올바른 방향을 지적하여 수행해야 할 작업을 식별합니다.

+0

여기서 tv [i] .setText (jsonArray.getJSONObject (i) .getString ("name")); 결과를 얻기 위해 XML 피드에서 가져 오는 것입니까? – TheHamstring

+0

필자는 위의 URL에서 반환 된 JSON 데이터의 버튼에 이름을 설정하고 있습니다 ... XML 피드를 구문 분석하고 해당 버튼의 텍스트를 설정할 수 있습니다 .. – Ajit

+0

첫 번째 버튼을 만들 때 가져 오면 경고의 "인수의 왼쪽은 변수 여야합니다." Button purch [] = new Button [tokens.length(); i ++]; 토큰은 나중에 내 목록보기를 채우기 위해 데이터를 읽는 내 변수입니다. 또한 레이아웃에 이미 존재하는 버튼을 대상으로하고 싶습니다.이 버튼은 자동으로 해당 버튼을 타겟팅하거나 어떤 방식 으로든 지정해야합니다. – TheHamstring

관련 문제