我有一个适配器,其中包含连接到 AutoCompleteTextView 的 100 个字符串。在纵向模式下,这可以按我的预期工作,如果我输入“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;
}
}
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>