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方法你就很容看我上面说的了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ang_qq_252390816

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值