2 AutoCompleteTextView,如何知道选择了哪个视图

时间:2013-07-02 12:03:34

标签: android autocompletetextview

它可能看起来像duplicate,但事实并非如此。

我的布局中有2 AutoCompleteTextView个。从地址,到地址。我需要知道其中哪一个发起了下拉列表。

由于两者都使用相同的项目布局,我复制并尝试,但仍然没有运气。

初始化AutoCompleteTextView

    fromAutoComplete = new AutoComplete(this, R.layout.fromautocomplete);
    fromAutoComplete.setNotifyOnChange(true);
    fromAddress = (AutoCompleteTextView) findViewById(R.id.fromAddress);
    fromAddress.setAdapter(fromAutoComplete);
    fromAddress.setOnItemClickListener(this);
    fromAddress.setOnItemSelectedListener(this);

    toAutoComplete = new AutoComplete(this, R.layout.toautocomplete);
    toAutoComplete.setNotifyOnChange(true);
    toAddress = (AutoCompleteTextView) findViewById(R.id.toAddress);
    toAddress.setAdapter(toAutoComplete);
    toAddress.setOnItemClickListener(this);
    toAddress.setOnItemSelectedListener(this);

请注意R.layout.toautocomplete和R.layout.fromautocomplete

两者完全相同。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:minLines="3"
android:layout_marginBottom="15dp"
android:textSize="15dp" 
android:text="sample text"
android:marqueeRepeatLimit="marquee_forever"/>

为了调试这些值,我已经放了一些Log语句

@Override
public void onItemSelected(AdapterView<?> parent, View who, int position, long id) {
    Log.e("Taxeeta", ">"+parent.getId()+":"+who.getId()+":"+id) ;
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {      
    Log.e("Taxeeta", parent.getId()+":"+view.getId()+":"+id) ;
}

日志输出

  

07-02 17:24:14.773:E / Taxeeta(12103): - 1:-1:0

坦率地说,这很糟糕,为什么父,视图和id的id会返回这些无用的值?

我遗漏了一些非常基本的东西。

1 个答案:

答案 0 :(得分:0)

我想我明白了。答案是2折。

  1. id返回的onItemClick值为第一次自动填充返回 0 ,第二次自动完成时返回 1

      

    07-02 17:24:14.773:E / Taxeeta(12103): - 1:-1:0

         

    07-02 17:24:14.773:E / Taxeeta(12103): - 1:-1:1

  2. 布局textview应该有id。这是在onItemClick

  3. 视图参数中返回的

    对于FromLayout

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fromautocomplete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:minLines="3"
    android:layout_marginBottom="15dp"
    android:textSize="15dp" 
    android:text="sample text"
    android:marqueeRepeatLimit="marquee_forever"/>
    

    ToLayout

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toautocomplete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:minLines="3"
    android:layout_marginBottom="15dp"
    android:textSize="15dp" 
    android:text="sample text"
    android:marqueeRepeatLimit="marquee_forever"/>