2014-06-12 72 views
1

我正在製作一個Android應用程序,我正在使用AutoCompleteTextView並嘗試設置onClickListener以重置輸入值,單擊AutoCompleteTextViewAutoCompleteTextView單擊監聽器無法正常工作

的問題是,我有兩個AutoCompleteTextView所以當我在第一AutoCompleteTextView輸入的文本,然後第二AutoCompleteTextView然後點擊第一個AutoCompleteTextView那麼它是不是在第一AutoCompleteTextView

任何想法,呼籲OnClickListener這是爲什麼表現這種怪異?

<AutoCompleteTextView 
    android:id="@+id/fromStationEdit" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/TextView1" 
    android:layout_marginLeft="12dp" 
    android:layout_marginTop="3dp" 
    android:background="@drawable/apptheme_edit_text_holo_light" 
    android:drawableRight="@drawable/ic_rail" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:imeOptions="actionNext" 
    android:paddingLeft="8dp" 
    android:singleLine="true" 
    android:textColor="@color/black" 
    android:textColorHighlight="@android:color/black" 
    android:textCursorDrawable="@null" 
    android:textSize="16sp" > 

    <requestFocus /> 
</AutoCompleteTextView> 

AutoCompleteTextView ClickListener。

// reset the value when user click on this view 
source_stn_txt.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     source_stn_txt.setText(""); 
    } 
}); 

// reset the value when user click on this view 
dest_stn_txt.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     dest_stn_txt.setText(""); 
    } 
}); 

source_stn_txt.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 
     source = source_stn_txt.getText().toString().trim(); 
     dest_stn_txt.requestFocus(); 
    } 
}); 

在此先感謝。

+0

您是否在AutoCompleteTextview中綁定了任何值? – GrIsHu

+0

嘗試設置此偵聽器:「setOnItemClickListener」 –

+0

@GrIsHu是的,我已經從建議列表中選取了值 –

回答

2

幫助@Williams的鏈接是:onClick event is not triggering | Android。也在上面發表評論。我很高興你找到你的解決方案!

當用戶與UI元素進行交互時,各種監聽器按自上而下的順序調用。 (例如:OnTouch - > OnFocusChange - > OnClick。)如果偵聽器已定義(使用setOn ...偵聽器)並且它使用此事件:將不會調用較低優先級的偵聽器。就其性質而言,當您第一次觸摸EditText時,它會使用OnFocusChangeListener接收焦點,以便用戶可以輸入。該操作在此消耗,因此不會調用OnClick。每個連續的觸摸都不會改變焦點,因此事件會逐漸下移到OnClickListener。

0

您是否聲明瞭要在Strings.xml中完成的項目。如果沒有,做這樣的事情:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<string name="app_name">AutoComplete</string> 
<string name="action_settings">Settings</string> 
<string name="hello_world">Hello world!</string> 
<string name="auto_complete">AutoComplete</string> 
<string name="multi_auto_complete">Multi AutoComplete</string> 
<string-array name="list_of_countries"> 
    <item >USA</item> 
    <item >Uk</item> 
    <item >Canada</item> 
    <item >Australia</item> 
    <item >France</item> 
    <item >Italy</item> 
    <item >China</item> 
    <item >Japan</item> 
    <item >Spain</item> 
    </string-array> 

</resources> 

或者在你的班級活動聲明:

AutoCompleteTextView myAutoComplete; 

String item[]={ 
"January", "February", "March", "April", 
"May", "June", "July", "August", 
"September", "October", "November", "December" 
}; 
1

您需要使用AdapterView.OnItemClickListener()沒有OnClickListener

AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.fromStationEdit); 

    String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
      "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
      "Linux", "OS/2", "Ubuntu"}; 

    ArrayList<String> list = new ArrayList<String>(); 
    for (int i = 0; i < values.length; ++i) { 
     list.add(values[i]); 
    } 
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, list); 
    actv.setAdapter(adapter); 

    actv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      Toast.makeText(MainActivity.this, 
        adapter.getItem(position).toString(), 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

查看我更新了我的問題 –

+0

@Williams顯示您是如何爲兩個'AutoCompleteTextView'實現點擊偵聽器的? – GrIsHu

+0

是的,我已經添加了有問題的代碼。請看那裏 –

相關問題