2014-01-17 3 views
-1

우선 앱이 이렇게 보입니다. Android 버튼을 클릭하여 Textview의 데이터를 변경하는 방법

App design

어떻게 만들 - 내가 추가를 클릭하면, 그 컬럼에 텍스트 뷰는 값 + 1로 업데이트됩니다?

루프에서 TextView와 Button을 만들고 있습니다.

for(int i = 0;i < playercountint; i++) 
{ 
LinearLayout layout = new LinearLayout(this); 
      layout.setOrientation(LinearLayout.VERTICAL); 
      layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,(100/playercountint))); 
      layout.setGravity(Gravity.CENTER_HORIZONTAL); 
TextView tt = new TextView(this); 
      tt.setText("0"); 
      tt.setTextSize(14); 
      tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      tt.setGravity(Gravity.CENTER_HORIZONTAL); 


      Button btadd = new Button(this); 
      btadd.setText("Add"); 
      btadd.setId(2); 


      btadd.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        ????? what here? 
       } 
      }); 
} 

버튼의 열에있는 TextView 값만 변경되므로 onClick 함수에 작성해야하는 내용이 변경됩니다.

하나의 바깥 쪽 LinearLayout은 수평 방향으로 배치되고 루프 내에서 생성되는 것은 Linear Layouts가 수직입니다.

아마 내가 1 루프 반복에 대한 템플릿을 작성해야합니까?

답변

1
tt.setText("something"); 
tt.invalidate(); 

내 나는 심지어 for 루프가 어 당신이 당신의 텍스트 뷰 final을하고는 그것의 설정 .. 텍스트 뷰에 대한 참조를 개최 최종 사용자의 텍스트 뷰

+1

나는 당신이 onClick 함수에 넣기 전에 textView final을 작성해야한다고 생각합니다. – AnxGotta

+0

이전에 만든 객체에 대한 참조를 좋아할 수는 없지만 어떻게 든 찾아야합니다. 설명 \t 자원 \t 경로 \t 위치 이 다른 방법에 정의 된 내부 클래스 내부가 아닌 최종 변수 TT를 참조 할 수 없습니다 \t 유형 – waplet

2

첫째을해야했다 통지를하지 않았다 나쁜

public View getPlayerView(){ 
    LinearLayout layout = new LinearLayout(this); 
       layout.setOrientation(LinearLayout.VERTICAL); 
       layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,(100/playercountint))); 
       layout.setGravity(Gravity.CENTER_HORIZONTAL); 
    final TextView tt = new TextView(this); 
       tt.setText("0"); 
       tt.setTextSize(14); 
       tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
       tt.setGravity(Gravity.CENTER_HORIZONTAL); 


       Button btadd = new Button(this); 
       btadd.setText("Add"); 
       btadd.setId(2); 


       btadd.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         tt.setText(String.valueOf(Integer.parseInt(tt.getText())+1)); 
        } 
       }); 
      layout.add(tt); 
      layout.add(btadd); 
    return layout; 
} 
:있는 LinearLayout을 반환 당신은 하나 개의 함수를 작성할 수
for(int i = 0;i < playercountint; i++) 
{ 
LinearLayout layout = new LinearLayout(this); 
      layout.setOrientation(LinearLayout.VERTICAL); 
      layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,(100/playercountint))); 
      layout.setGravity(Gravity.CENTER_HORIZONTAL); 
final TextView tt = new TextView(this); 
      tt.setText("0"); 
      tt.setTextSize(14); 
      tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      tt.setGravity(Gravity.CENTER_HORIZONTAL); 


      Button btadd = new Button(this); 
      btadd.setText("Add"); 
      btadd.setId(2); 


      btadd.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        tt.setText(String.valueOf(Integer.parseInt(tt.getText())+1)); 
       } 
      }); 
} 

온 클릭

가치

루프에서이 함수를 호출하십시오.

1
tt.setText(Integer.parse(tt.getText().toString()) + 1); 

그러나 * .xml 파일에서 UI (레이아웃)를 디자인하는 것이 좋습니다. 자세히보기 : http://developer.android.com/guide/topics/ui/declaring-layout.html

+0

그래,하지만 내 레이아웃은 playercount에 어떤 제안을 따라? Android Developping을 처음 사용했습니다. – waplet

+0

Integer.parseInt (...); – waplet

+0

tt.setText ()는 문자열의 리소스 ID가 필요합니다. 대신 문자열을 설정해야합니다 –

0

TextView에 고유 한 id (.setId (...))을 제공해야합니다.

final TextView tv = (TextView) findViewById(R.id.your_textview_id); 
final String cur_text = tv.getText(); 
Integer plus_one = Integer.valueOf(cur_text); 
plus_one++; 
tv.setText(plus_one.toString()); 

그것을 시도하지 않았하지만 작동합니다 : 단순히이 같은 것을 사용하여 onClick 방법이를 가졌어요.

0
static int counter = 0; 

    btn_Add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       counter ++; 
      tv_Display.setText("Your Total is : " + counter); 

      } 
     }); 
관련 문제