Android 获取array数组资源

开发中经常使用到RecylerView这个控件,对于RecyclerView而言,填充数据的环节是必不可少的,而数据大部分情况下都是多条的,所以在此记录一下;

数组资源文件一般放在 res–> values –>attrs.xml(没有就自己创建一个)

注意:Resoures的获取在Activity中、Fragment和其他类中是有区别的,例如:

Activity中:

Resources resources = getResources();

Fragment中:

Resources resources = getActivity().getResources();

其它类中:

Resources resources = mContext.getResources();

第一种情况:

<resources> <string-array name="language_values"> <item>Android</item> <item>Java</item> <item>C++</item> <item>Python</item> </string-array> </resources>

此时,在Java代码中就可以直接获取数据资源,代码如下:

String [ ] languages = getResources().getStringArray(R.array.language_values);

第二种情况:

<resources> <string-array name="language_values"> <item>@string/android</item> <item>@string/java</item> <item>@string/c</item> <item>@string/python</item> </string-array> </resources>

在Java代码中获取方式:

List<Model> modelList = new ArrayList<>(); String[] languages = mContext.getResources().getStringArray(R.array.languages_values); TypedArray ta = mContext.getResources().obtainTypedArray(R.array.languages_values); modelList.clear(); for (int i = 0; i < languages.length; i++) { int id = ta.getResourceId(i, -1); modelList.add(new Model(id, languages[i])); } ta.recycle(); //这里不要忘记 

备注:这里的Model是一个实体类,有两个属性一个是int类型,一个是String类型,可根据自己需要改变,生成合适的构造方法

进行数据填充;

水平有限,难免会有错误,如有错误,烦请指出,共同进步,谢谢!

原文链接:https://blog.csdn.net/xyl826/article/details/98332209?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165277103516782390540614%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165277103516782390540614&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-24-98332209-null-null.article_score_rank_blog&utm_term=%E8%B5%84%E6%BA%90

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
文明发言,共建和谐米科社区
提交
头像

昵称

取消
昵称表情图片