ArrayAdapter使用自定义布局
Posted Ang_qq_252390816
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayAdapter使用自定义布局相关的知识,希望对你有一定的参考价值。
关键代码
ArrayAdapter cuisine = new ArrayAdapter(getActivity(), R.layout.listview_cook_cuisine,R.id.tv_cuisine_item, Arrays.asList(getResources().getStringArray(R.array.cook_cuisine_type)));
listview.setAdapter(cuisine);
layout布局
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/tv_cuisine_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>
资源文件中定义数据
在res/values/string.xml中定义如下类型的数据其实就是一个数组类型的数据;
<string-array name="cook_cuisine_type">
<item>粤</item>
<item>湘</item>
<item>川</item>
<item>鲁</item>
<item>苏</item>
<item>浙</item>
<item>徽</item>
<item>闽</item>
</string-array>
说明
不过这种自定义的布局只能是一个控件,而且还必须是TextView,查看ArrayAdapter源码可以知道;
源码分析
createViewFromResource方法中mFieldId 就是TextView控件的id,可以在船舰ArrayAdapter时候传入布局id(这个布局就是一个TextView),要是自己定义布局传入的TextViewde的id,变量就是R.id.tv_cuisine_item传入的id接受者;如果要看源码从ArrayAdapter的构造方法public ArrayAdapter(@NonNull Context context, @LayoutRes int resource,
@IdRes int textViewResourceId, @NonNull List objects) {}入手再到createViewFromResource方法你就很容看我上面说的了!
以上是关于ArrayAdapter使用自定义布局的主要内容,如果未能解决你的问题,请参考以下文章
Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
在 Android 中以编程方式创建带有自定义列表项的 ListView - 没有 xml 列表项布局