2014-09-10 50 views
0

我有一個包含多行的表格,每個表格都包含一個對應於某個維度的EditText。我想要有某種監聽器會返回當前選中的任何EditText。這可以通過getCurrentFocus();onFocusChange();完成嗎?確定在焦點上選擇哪個EditText字段

我的想法是讓用戶選擇/聚焦他們想要編輯的尺寸字段,然後在按下「寫入數據」按鈕時使用設備陀螺儀的輸出斜率/角度完成字段。我可能會這樣做使用selected_dimension_edittext.setText(gyro_value);

+0

ü打算什麼R鍵,以便與入圍editext?你想在選中它或者在焦點移動到下一個edittext之後再聽嗎? – KOTIOS 2014-09-10 16:38:19

+0

@DIVA我打算使用'x.setText();'使用按鈕和陀螺儀來改變數值。 – JHinne 2014-09-10 16:45:33

回答

0

你可以知道哪些EditText上具有焦點由這樣的觀點的ID:

EditText edText1 = (EditText)findViewById(R.id.editText1); 
    EditText edText2 = (EditText)findViewById(R.id.editText2); 

    OnFocusChangeListener mFocusChangeListener = new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      // TODO Auto-generated method stub 
      if(hasFocus){ //Check if View has focus 
       switch (v.getId()){ 
        case R.id.editText1: { 
         //Code A 
        } break; 
        case R.id.editText2: { 
         //Code B 
        } break; 
       } 
      } 
     } 
    }; 

    edText1.setOnFocusChangeListener(mFocusChangeListener); 
    edText2.setOnFocusChangeListener(mFocusChangeListener); 
+0

是的,這個作品!該方法的大,因爲我有每個坡道20尺寸,但它的工作完美。 – JHinne 2014-09-10 18:20:41

+0

我很高興它爲你工作:D – Bernas 2014-09-10 18:21:44

0

如果editTexts在一個ArrayList中,您可以傳遞一個標籤到每個editText這是索引。 例如:

for(int i=0;i<editTextList.size();i++){ 
    editTextList.get(i).setTag(i); 
} 

然後可以檢查與聽者(textChangedListener或TextWatcher - >http://lecturesnippets.com/android-textchanged-listener-textwatcher/),它的EditText通過讀取標籤改變或選擇。只需遍歷editTextList並調用setText() - Method,如果編輯文本具有選定的標記。

+0

他們不在列表中,我怎麼能這樣做呢?我目前已經在代碼中初始化它們,它們是基於所選父坡道樣式進行動態調整的(每個坡道類型都有一組不同的維度關聯)。 – JHinne 2014-09-10 16:45:58

+0

我不完全明白你想要什麼。請看看我編輯的答案 – Kewitschka 2014-09-10 17:31:45

+0

我更新了OP(希望)更好地描述了我正在嘗試做的事情。 – JHinne 2014-09-10 17:36:00