2011-04-20 6 views
0

사용자가 필드를 대화식으로 추가하고 제거 할 수있는 Android 애플리케이션을 작성 중입니다. 사용자가 추가하는 각 필드에는 사용자가 상호 작용할 수있는 몇 가지 버튼과 값이 있습니다. 나는 자신의 onClickListener를 보유 할 수있는 필드를 추가 할 수있는 서브 클래스를 만들 생각 이었지만 그렇게하는 방법을 모르겠습니다.클래스를 사용하여 android에서보기 설정

여기 내 의도를 분명히해야하는 의사 코드가 있습니다.

public class sClass extends View implements onClickListener{ 
    this.setContextView(R.layout.vClass);//how do I do this in a correct way? 
     @Override 
     public void onClick(View v){ //add code here 
     } 
    } 

및 응용 프로그램의 기본 클래스입니다 aClass :

내가 클래스 vClass을 말해봐.

public class aClass extends Activity implements onClickListener{ 
    Button b; 
    LayoutInflater i; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     this.b =(Button)this.findViewById(R.id.btn); 
     b.setOnClickLister(this); 

    } 
    @Override 
    public void onClick(View v){ 
     //this is what I have now to add View 
     final LinearLayout canvas =(LinearLayout)aClass.this.findViewById(R.id.main); 
     View cv =this.inflater.inflate(R.layout.counter, canvas, false); 
     canvas.addView(cv); 
    } 
} 

어떻게 vClass를 사용하여 요소를 aClass에 추가 할 수 있습니까?

타자를 치는 것은 다른 해결책에 대한 생각입니다.

나는 (하위 구성 요소없이) 추가 한 모든 뷰의 id의 추적 나는 그런 종류의 일을 할 수있는 경우 :

ID가 ID가 내가보기에 할당됩니다
View vv = findViewById(id); 
Button bb = vv.findViewByIf(R.id.xmlId); 

하는 알아요, xmlId는 XML 파일에 지정된 문자열입니까?

감사

Yotam

솔루션을

, 레이아웃에 사용

답변

1

ID를 아래의 설명을 읽어 반드시 고유하지 않은, 그래서 내가

, 당신은 ArrayList에 추가 Views을 유지해야 추측
View cv =this.inflater.inflate(R.layout.counter, canvas, false); 
this.viewList.add(cv); 
canvas.addView(cv); 

또는 sClass 구현 내에서 색인 멤버를 선언 할 수 있습니다. n은하고 ArrayList에 추가 된 인덱스를 저장 : 당신은 당신이 원하는보기에 액세스 할 수

private int index; 

public sClass(final int index) 
{ 
    this.index = index; 
} 

public int getIndex() 
{ 
    return this.index; 
} 

@override 
public boolean equals(Object obj) 
{ 
    return ((obj instanceof sClass) && (((sClass)obj).getIndex() == this.index)); 
} 

두 가지 방법.

뷰 내부 낳는 버튼을 findViewById() 방법을 통해 액세스 다음과 같이 R.id.buttonId에서, VV 뷰의 레이아웃 XML 파일에 선언 된

Button bb = vv.findViewById(R.id.buttonId); 

:

<Button android:id="@+id/buttonId" [...] /> 
+0

감사합니다 . 내가 놀아서 어떻게 진행되었는지 말해 줄거야. – Yotam

+0

행운을 비네, 문제가 있으면 알려주십시오 – rekaszeru

+0

이것에 대해 생각해 봅시다. 새로운 질문이 있습니다. 내가 배치 할 각보기에는 onClick에 응답해야하는 필드가 있습니다. 클릭 리 스터에 onClickLister를 설정해야하지만 클릭 한 것을 어떻게 확인할 수 있습니까? id가 오버로드되었으므로 getId() 메서드를 사용할 수 없습니다 ... 감사합니다. – Yotam

관련 문제