2016-03-02 153 views
0

我有一個表視圖,其中我通過xml填充行像這樣 TableLayout table =(TableLayout)findViewById(R.id.tblLayoutPop);Android通過ID獲取元素組,然後通過標記選擇

for(int i=0;i<3;i++){ 
     TableRow row = (TableRow) LayoutInflater.from(Popup.this).inflate(R.layout.row, null); 
     row.setTag(i); 
     ((TextView)row.findViewById(R.id.header)).setText("Some Text"); 
     EditText ed= (EditText) row.findViewById(R.id.editText); 
     ed.setTag(i); 
     Button add= (Button) row.findViewById(R.id.buttonAdd); 
     add.setTag(i); 
     Button remove= (Button) row.findViewById(R.id.buttonRemove); 
     remove.setTag(i); 
     table.addView(row); 
    } 

和XML是here看起來像enter image description here

有3點這樣的行,現在添加按鈕的點擊,我想增加它的特別編輯文本

爲此,我想這一點,選擇先編輯文本,然後按標記獲取

public void add(View v){ 
     String tag = v.getTag().toString(); 
     Log.d("TAG", tag); 
     int position = Integer.parseInt(tag); 

     View eds= findViewById(R.id.editText); 
     EditText ed= (EditText) eds.findViewWithTag(position); 
     ed.setText(tag); 
    } 

這不起作用而且我需要一種方法來選擇相應的編輯文本。如何做到這一點

任何幫助,非常感謝

感謝

回答

1

看了一下烏爾xml文件

首先映入編輯文本的標籤改爲從按鈕

ed.setTag("ed"+i);

不同的東西則U可以通過標籤從按鈕的父視圖中選擇編輯文本。由於你已經將按鈕分組並按線性佈局編輯文本。

喜歡這張

EditText ed= (EditText) ((View) v.getParent()).findViewWithTag("ed"+tag); 
+0

老兄這是它:)非常感謝! –

1

這是未經測試,但它可能會指向你到正確的方向

implement View.OnClickListener 

在循環集點擊事件的按鈕Views

for(int i=0;i<3;i++){ 
    TableRow row = (TableRow) LayoutInflater.from(Popup.this).inflate(R.layout.row, null); 
    row.setTag(i); 
    ((TextView)row.findViewById(R.id.header)).setText("Some Text"); 
    EditText ed= (EditText) row.findViewById(R.id.editText); 
    ed.setTag(i); 
    Button add= (Button) row.findViewById(R.id.buttonAdd); 
    add.setTag(i); 
    add.setOnClickListener(this) 
    Button remove= (Button) row.findViewById(R.id.buttonRemove); 
    remove.setTag(i); 
    remove.setOnClickListener(this); 
    table.addView(row); 
} 

然後在你的onClick(View view) m ethod,試試這個

@Override 
public void onClick(View view) { 
    int viewId = view.getId(); 

    if(viewId == R.id.buttonAdd && view.getTag().toString().equals("0")){ 
     View parentView = view.getRootView(); 
     EditText mEditText = (EditText)parentView.findViewWithTag("0"); 

     int currentEditTextValue = Integer.parseInt(mEditText.getText().toString()); 
     currentEditTextValue = currentEditTextValue + 1; 
     mEditText.setText(String.valueOf(currentEditTextValue)); 
    } 
    // more conditions here ... 
} 

希望它給你更多的想法。問問你有沒有問題。

+0

由於@NollyĴ但正如我看我VL結了基於'view.getTag()3分的條件。的toString()。等於( 「0」)''然後視圖.getTag()。toString()。equals(「1」)''等等,如果我有n行然後n條件,可能會檢查他們在for循環,不是一個非常有效的方法。我只是複製粘貼它,它崩潰在這一行'int currentEditTextValue = Integer.parseInt(mEditText.getText()。toString());' –

+0

感謝幫助 –