我想在android中使用AutoCompleteTextView并阅读有关它的官方developer.android文档。
有一个代码片段,如下所示:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, COUNTRIES);
AutoCompleteTextView textView = (AutoCompleteTextView)
findViewById(R.id.countries_list);
textView.setAdapter(adapter);
}
private static final String[] COUNTRIES = new String[] {
"Belgium", "France", "Italy", "Germany", "Spain"
};
我不明白ArrayAdapter的构造函数中的第二个参数(android.R.layout.simple_dropdown_item_1line)是什么意思,它来自哪里?
它是一个可以从Android获得的布局还是我必须用我自己创建的布局替换这个布局,以及在这种情况下如何定义这个布局文件?
具体我的代码lokks喜欢 XML:
<AutoCompleteTextView
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
的java:
AutoCompleteTextView search =(AutoCompleteTextView) findViewById(R.id.search);
String[] vocabs = new String[1001];
//fill the String array
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line ,vocabs);
search.setAdapter(adapter);
答案 0 :(得分:1)
他们使用3个参数(documentation)调用ArrayAdapter的构造函数:ArrayAdapter(Context context, int resource, T[] objects)
资源 R.layout.simple_dropdown_item_1line 只是下拉列表的默认Android框架布局之一。请参阅here其他默认布局列表。
编辑回答您的第二个问题:
您可以使用默认的Android布局(您提供的示例应该可以使用)或您定义的自定义布局。如果是最后一种情况,那么只需为此布局创建一个xml布局:
<强>布局/ dropdown_custom_view.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical">
<TextView
android:id="@+id/vocab_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="vocab"/>
</LinearLayout>
然后你可以使用指向你的自定义布局的ArrayAdapter构造函数ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
和你想用vocabs填充的TextView:
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.dropdown_custom_view, R.id.vocab_text ,vocabs);
search.setAdapter(adapter);
同时检查您是否填充了vocabs
数组。
答案 1 :(得分:0)
这个布局在Android系统中可用,这是您使用android.R
的原因。它用于显示数组适配器中的项目。它基本上是带有一些样式的文本视图
答案 2 :(得分:0)
您可以使用AutoCompleteTextView
的自定义布局,例如
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(this, R.layout.custom_layout, R.id.text_title, COUNTRIES);
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.countries_list);
textView.setAdapter(adapter);
custom_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e4e4e4"
>
<TextView
android:id="@+id/text_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
tools:text="AA"
android:padding="15dp"
/>
</LinearLayout>