[android] 常用数据适配器SimpleAdapter
2023-02-18 15:47:14 时间
当我们的列表包含图片和文字信息时,ArrayAdapter就无法实现了,使用SimpleAdapter,activity中findViewById()获取到ListView对象,调用ListView对象的setAdapter()方法,参数中传入SimpleAdapter对象。每一条数据是一个Map集合,所有的数据是一个List集合
new SimpleAdapter(context,data,resource,from,to)
context上下文,data数据集合List<Map<String,Object>> ,resuorce布局资源,from是String[]是数据中Map集合的key,to是int[]是布局文件中key对应的控件的资源id
Data数据,先new出来ArrayList 再new出来HashMap,调用HashMap对象的put()方法放入键值对,图标的放入资源id R.drawable.xxxx,调用ArrayList对象的add()方法加入Map对象
SimpleAdapter的源代码,构造函数,把data,resource,from,to对象赋值给成员变量,通过Context对象的getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法获取LayoutInflater布局填充器对象赋值给成员变量。同样有getCount()方法和getView()方法,getView()中进行处理取出单条Map对象,根据to这个资源id的int[] 获取控件然后进行绑定。
activity代码:
package com.tsh.myadapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv_list=(ListView) findViewById(R.id.lv_list); List<Map<String, Object>> data=new ArrayList<Map<String,Object>>(); Map<String,Object> map1=new HashMap<String,Object>(); map1.put("tv_name","电话"); map1.put("iv_icon", R.drawable.ic_menu_call); Map<String,Object> map2=new HashMap<String,Object>(); map2.put("tv_name","短信"); map2.put("iv_icon", R.drawable.ic_menu_btn_add); Map<String,Object> map3=new HashMap<String,Object>(); map3.put("tv_name","摄像"); map3.put("iv_icon", R.drawable.ic_menu_camera); data.add(map1); data.add(map2); data.add(map3); lv_list.setAdapter(new SimpleAdapter(this, data, R.layout.list2_item, new String[]{"tv_name","iv_icon"}, new int[]{R.id.tv_name,R.id.iv_icon})); } }
相关文章
- Mac电脑运行ios应用PlayCover
- 苹果发布 iOS 16 公开测试版,一起来看看这几项新功能
- 解决 Flutter 引起的 iOS 内存崩溃问题
- iOS 16 中的 Live Text 的更新
- iOS16 中的 3 种新字体宽度样式
- 在 iOS 16 中用 SwiftUI Charts 创建一个折线图
- 在 iOS16 中用 SwiftUI 图表定制一个线图
- Android平台GB28181设备接入端如何支持跨网段语音对讲?
- 基于flask和bootstrap-table的通用数据查询
- 爬虫方案 | 爬取大众点评网评论的几个思路(从小程序端)
- 【黄啊码】如何用小程序实现世界杯参赛队伍投票
- 《Android App开发进阶与项目实战》资源下载和内容勘误
- 微信小程序使用阿里巴巴的矢量图标iconfont
- 微信小程序 点击显示隐藏 极简Tab标签 点击添加class样式
- 微信小程序 wx:if 与 hidden区别
- 微信小程序 CSS border-radius元素 overflow:hidden失效问题 iPhone ios 苹果兼容问题
- 微信小程序 自定义 tabBar案例 官方案例迁入无效解决方法 非 tab 页显示 tabBar的问题解决 自定义tabBar与原生tabBar以及自写伪tabbar的区别
- IOS APPStore 上传更新应用版本 软件
- Android - NETD解读
- 【Android自定义控件】不用ScrollView实现上下两屏滑动