Android 横向模式下AutoCompleteTextView.onItemClick的意外行为

Android 横向模式下AutoCompleteTextView.onItemClick的意外行为,android,Android,我有一个适配器,里面有100个字符串连接到AutoCompleteTextView。在纵向模式下,这就像我期望的那样,如果我输入“11”,所有100个元素都会显示为下拉列表,正确的索引将作为索引参数传递到onItemClick中 不过,我不明白在横向模式下会发生什么,如果我键入“11”,只有前20个元素会显示在列表中,当我在onItemClick方法中单击它们时,只有列表中的前4个元素通过正确的索引。当我点击其他列表元素时,索引是-1?我还可以看到,在横向模式下,计数是100,那么为什么只有前2

我有一个适配器,里面有100个字符串连接到AutoCompleteTextView。在纵向模式下,这就像我期望的那样,如果我输入“11”,所有100个元素都会显示为下拉列表,正确的索引将作为索引参数传递到onItemClick中

不过,我不明白在横向模式下会发生什么,如果我键入“11”,只有前20个元素会显示在列表中,当我在onItemClick方法中单击它们时,只有列表中的前4个元素通过正确的索引。当我点击其他列表元素时,索引是-1?我还可以看到,在横向模式下,计数是100,那么为什么只有前20个显示

有人知道这是为什么吗

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {

public static final String TAG = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);

    for(int i = 0; i < 100; i++) {
        adapter.add(new String("11" + i));
    }

    AutoCompleteTextView ac = (AutoCompleteTextView) findViewById(R.id.search_auto_complete);

    ac.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int index, long id) {

            Log.d(TAG, "Index: " + index);
            Log.d(TAG, "Elements in adapter: " + adapterView.getCount());               

            if(index == -1) {
                Log.e(TAG, "Index not found, aborting AutoCompleteTextView.onItemClick!");
                return;
            }
        }
    });

    ac.setAdapter(adapter);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
导入android.app.Activity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.Menu;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.AutoCompleteTextView;
公共类MainActivity扩展了活动{
公共静态最终字符串TAG=“MainActivity”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u下拉菜单\u项);
对于(int i=0;i<100;i++){
添加(新字符串(“11”+i));
}
AutoCompleteTextView ac=(AutoCompleteTextView)findViewById(R.id.search\u auto\u complete);
ac.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView、视图视图、整型索引、长id){
Log.d(标签,“索引:”+索引);
d(标记“适配器中的元素:”+adapterView.getCount());
如果(索引==-1){
e(标记“找不到索引,正在中止AutoCompleteTextView.onItemClick!”);
返回;
}
}
});
ac.setAdapter(适配器);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <AutoCompleteTextView
        android:id="@+id/search_auto_complete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:dropDownWidth="fill_parent"
        android:gravity="center_vertical|left"
        android:inputType="textAutoComplete" />

</RelativeLayout>

这似乎只发生在运行Android 4+的三星Galaxy SII和SIII上。在运行较旧Android版本的Galaxy SII上,我没有同样的问题。尽管如此,如果有人以前遇到过这个问题,我希望他们能分享解决方案/解决方法。