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自定义Arrayadapter不显示数据

在 Android 中以编程方式创建带有自定义列表项的 ListView - 没有 xml 列表项布局

Android Spinner实现下拉框几种方式及配合BaseAdapter实现自定义布局

自定义listview数据源adapter时可以继承的类都有哪些