Android - Adapter的使用
来源:互联网 发布:csgo职业选手优化fps 编辑:程序博客网 时间:2024/05/18 03:21
Adapter 的使用
在Android里面经常会用到Adapter,例如列表。
Adapter主要是实现列表里面每一个列表项的数据填充。
Adapter主要有3种常用的实现类:ArrayAdapter,SimpleAdapter,BaseAdpter。
ArrayAdapter
根据名称可以大致知道这个Adapter的用途,通常用于数组或者List集合的多个值包装成多个列表项。
对应的列表项布局通常是TextView。
核心代码如下:
// 找到布局文件中对应的列表视图ListView mListView = (ListView)FindViewById(R.id.listView);// 定义一个数据数组String[] arr = {"item1","item2","item3"};// 生成一个ArrayAdapterArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(this, R.layout.array_item, arr);// 把ArrayAdapter装配到列表视图上mListview.setAdapter(mArrayAdapter);
SimpleAdapter
SimpleAdapter从名字看是简单,但能实现的功能不简单,不要被他的名字欺骗了。下面我们来看看他能力。
这里设计一个有图标和文字的列表项(类似桌面图标),核心代码如下:
// 列表项中的文字和图标数据String[] items_name = {"item1","item2","item3"};int[] items_image = {R.drawable.sms, R.drawable.keep, R.drawable.dropbox};// 生成一个集合对象,这里很重要!List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();for(int i = 0; i < items_name.length; i++){ Map<String, Object> listItem = new HashMap<String, Object>(); listItem.put("image", items_image[i]); listItem.put("name", items_name[i]); listItems.add(listItem);}// 生成SimpleAdapter,把数据和列表项的ImageView,TextView对应起来SimpleAdapter mSimpleAdapter = new SimpleAdapter(this, listItems, R.layout.main_grid_item, new String[]{"image","name"},new int[]{R.id.item_image, R.id.item_text});// 找到列表视图GridView mGridView = (GridView)findViewById(R.id.gridView);// 装配SimpleAdaptermGridView.setAdapter(mSimpleAdapter);
BaseAdapter
BaseAdapter 能取得Adapter的最大控制权,所以学会使用BaseAdapter就能把绝对多数效果都能实现了,是不是很吸引呢?
// mainActivity.java String[] items_name = {"item1","item2","item3"};int[] items_image = {R.drawable.sms, R.drawable.keep, R.drawable.dropbox};ListView mListView = (ListView)FindViewById(R.id.listView);MyAdapter myAdapter = new MyAdapter(this,items_name,items_image,R.layout.list_items);mListView.setAdapter(myAdapter);// MyAdapter.javapublic class MyAdapter extends BaseAdapter { private Context mContext; private int mLayout; private String[] name; private int[] image; private LayoutInflater mLayoutInflater; public MyAdapter(Context context, String[] s, int[] i, int itemlayout){ mContext = context; mLayout = itemlayout; name = s; image = i; mLayoutInflater = LayoutInflater.from(context); } // 创建这个是为了提升效率,一次查找对应视图和保存对应的指针,每次操作只需要从中读取指针地址就能操作视图中的控件 public class ViewHolder{ public TextView name; public ImageView image; public ViewHolder(View view){ name = (TextView)view.findViewById(R.id.tv); image = (ImageView)view.findViewById(R.id.iv); } } // 返回position处的列表项的视图 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder mViewHolder; View mView; if (convertView == null) { mView = mLayoutInflater.inflate(mLayout, null); convertView = mView; mViewHolder = new ViewHolder(mView); convertView.setTag(mViewHolder); } else { mViewHolder = (ViewHolder)convertView.getTag(); } mViewHolder.name.setText(name[position]); mViewHolder.image.setImageResource(image[position]); return convertView; } // 有多少个列表项,很重要 @Override public int getCount() { return name.length; } // 返回position处的列表项内容 @Override public Object getItem(int position) { return null; } // 返回position处的列表项ID @Override public long getItemId(int position) { return position; }}
0 0
- Android adapter的使用
- android- adapter 的使用
- Android Adapter的使用
- Android - Adapter的使用
- Android适配器Adapter的使用
- android使用自定义的adapter
- android的adapter的大致使用过程
- android recyclerView adapter 的 itemType的使用
- Android ListView的自己adapter使用
- Android之Adapter的使用合集
- android listview和适配器adapter的使用
- Android--ListView 更高效的使用 Adapter
- Android的ListView与Adapter使用要点
- Android--ListView 更高效的使用 Adapter
- android学习二:适配器Adapter的使用
- android 适配器Adapter的使用总结
- Android--ListView 更高效的使用 Adapter
- android之ListView的Adapter使用
- 执行脚本出现bin/bash: bad interpreter: No such file or directory
- HEXO+Github,搭建属于自己的博客
- kidd风的IOS日志之IOS9获取联系人信息Contact FrameWork的基本使用
- iOS property两种实现方法区别的简单介绍
- appium 真机测试问题 出现 instruments crashed on startup
- Android - Adapter的使用
- 创建Pch预编译文件
- 使用Centos5在命令行查看DELL R720服务器硬件RAID
- UVa 1025 - A Spy in the Metro
- 零碎笔记(三)
- 通过PreparedStatement 对数据库进行增删改查
- Boost-asio之三
- DNA Prefix (Light_1224) 动态字典树 + 模板题
- 关于app集成DDPushClientDemoUDP消息前的icon不显示问题