2012-09-19 22 views
1

你知道我怎麼能得到觸發事件的視圖? 例如:如何獲取在Android中觸發事件的視圖?

final AutoCompleteTextView edtxInput = (AutoCompleteTextView)layout.findViewById(R.id.edtx_input); 
    edtxInput.setThreshold(2); 
    edtxInput.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) { 
      Console.debug(TAG, "view: " + arg1, Console.Liviu);    
      edtxInput.setText(((FormOption)edtxInput.getAdapter().getItem(position)).getDescription()); 
     } 
    }); 

這裏的問題是,我不知道我怎麼可以更新從edtxInput在OnItemClickListener文本沒有使它決賽。

感謝

回答

2

入住這http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html

參數

父在點擊發生的適配器視圖。

arg1是AutoCompleteTextView(edtxInput)本身。所以你可以做

AutoCompleteTextView edtxInput = (AutoCompleteTextView)layout.findViewById(R.id.edtx_input); 
    edtxInput.setThreshold(2); 
    edtxInput.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) { 
      Console.debug(TAG, "view: " + arg1, Console.Liviu); 
AutoCompleteTextView medtxInput = (AutoCompleteTextView)parent; 
       medtxInput.setText(((FormOption)medtxInput.getAdapter().getItem(position)).getDescription()); 
      } 
     }); 

UPDATE

好像AutoCompleteTextView不是適配器視圖的子類。這在SDK的某些部分是「錯誤」。要獲得AutoCompleteTextView你可以做一個黑客

AutoCompleteTextView medtxInput = (AutoCompleteTextView)view.getParent(); 

所以,你得到的點擊視圖然後得到其父即是AutoCompleteTextView

但是,爲什麼你不想AutoCompleteTextView在第一個地方是最終的?任何特定的原因?

如果你想只有你可以這樣寫和適配器僅此

((ChildClass)parent.getItemAtPosition(position)).getDescription(); 
+0

謝謝你的回答。你知道爲什麼不可能像這樣(AutoCompleteTextView)父項? Eclipse給我一個錯誤「無法從AdapterView 轉換爲AutoCompleteTextView」。 –

+0

對不起給我5分鐘測試它我自己並正確地發佈代碼 – weakwire

+0

更新了我的答案 – weakwire

0

聲明edtxInput爲全局變量,以便通過了類此變量訪問。

+0

這比宣佈最後更差 – weakwire

0

爲什麼做最後的變量是你如此糟糕?任何方式可以使edtxInput全局。見下面的代碼

public class myActivity extends Activity implements OnItemClickListener { 

    AutoCompleteTextView mEditTextInput; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mEditTextInput = (AutoCompleteTextView)layout.findViewById(R.id.edtx_input); 
     mEditTextInput.setOnItemClickListener(this); 
    } 

    public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) { 
     Console.debug(TAG, "view: " + arg1, Console.Liviu);    
     mEditTextInput.setText(((FormOption)mEditTextInput.getAdapter().getItem(position)).getDescription()); 
    } 
} 

這就是所有。

+0

我無法使其成爲全局的,因爲我的應用程序需要是通用的,所以用戶應該能夠在佈局中添加他想要的多少個AutoCompleteTextView。 –

相關問題