당신은 클래스 넓은 범위가됩니다 정의하는 변수를 만들 필요가 :
public class Example extends Activity {
EditText txt1;
EditText txt2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
txt1 = new EditText(this);
txt2 = new EditText(this);
...
지금 당신의 onclick 기능이
txt1
및
txt2
를 볼 수 있습니다.
는 또한
하나의 LinearLayout에 txt1
및 txt2
를 많이 만드는 것으로 나타 때문에, 당신은 그 EditTexts에 대한 참조하여 버튼을 전달할 수 있습니다
do {
...
// EditText[] array = { txt1, txt2 };
// is the short version of
EditText[] array = new EditText[2];
array[0] = txt1;
array[1] = txt2;
showtxt.setTag(array);
showtxt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText[] array = (EditText[]) v.getTag();
String aaa = array[0].getText().toString();
String bbb = array[1].getText().toString();
Log.v("Example", aaa + " " + bbb);
}
});
} while(some condition)
이되지 않을 수 있습니다 이상적이지만 더 이상의 맥락없이 나는 당신의 궁극적 인 목표를 추측 할 수 없다. 희망이 도움이됩니다!
마지막 제안
우리는 버튼과 두 개의 EditTexts 행을 호출하는 경우는 각각 뷰 그룹에서 행 또는 자신의보기를 저장할 수 있습니다. 각 행에 대한 배경색을 갖고 싶다고 가정 해 보겠습니다.
View row = new View(this); // or this could be another LinearLayout
row.setBackgroundColor(0x0000ff);
// Create and add the Button and EditTexts to row, as in row.addView(showtxt), etc
...
linearLayout.addView(row);
showtxt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
View row = v.getParent()
String aaa = ((EditText) row.getChildAt(1)).getText().toString();
String bbb = ((EditText) row.getChildAt(2)).getText().toString();
Log.v("Example", aaa + " " + bbb);
}
});
출처
2012-06-23 22:33:48
Sam
목표는 간단합니다. 새 요소를 만들고 새 요소를 참조하여 click 이벤트를 추가하는 것입니다. 두 번째 솔루션이 마음에 들지만 첫 번째 솔루션이 효과가 있을까요? – albanx
@albanx 답변을 업데이트했습니다. 첫번째 해결책은 모든 "행"에 대해 고유 한'txt1','txt2'를 요구합니다. 왜냐하면 루프를 사용하기 때문에 많은 변수가 필요할 것이기 때문입니다. 따라서 두 번째 또는 세 번째 옵션이 가장 좋습니다. 결국 원하는 결과에 따라 달라집니다. – Sam