BaseAdapter的使用以及优化
来源:互联网 发布:文化艺术品交易软件 编辑:程序博客网 时间:2024/05/18 00:06
今天学习了BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView、GridView等等。它是直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多方法,其中最重要的当属getView,因为这会涉及到ListView优化等问题!
BaseAdapter与其他Adapter有些不一样,其他的Adapter可以直接在其构造方法中进行数据的设置!
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_item,new String[]{"img","title","info"});
但是在BaseAdapter中需要实现一个继承自BaseAdapter的类,并且重写里面的很多方法,例
class MyAdapter extends BaseAdapter
{
private Context context;
public MyAdapter(Context context)
{
this.context = context;
}
@Override
public int getCount() {
return 0;
}
{
private Context context;
public MyAdapter(Context context)
{
this.context = context;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return null;
}
}
public View getView(int position, View convertView, ViewGroup parent) {
return null;
}
}
下面是关于getview()方法的简单加载
第一种优化:
public View getView(int position, View convertView, ViewGroup parent) {
View item = mInflater.inflate(R.layout.list_item, null);
ImageView img = (ImageView)item.findViewById(R.id.img)
TextView title = (TextView)item.findViewById(R.id.title);
TextView info = (TextView)item.findViewById(R.id.info);
img.setImageResource(R.drawable.ic_launcher);
title.setText("Hello");
info.setText("world");
return item;
}
View item = mInflater.inflate(R.layout.list_item, null);
ImageView img = (ImageView)item.findViewById(R.id.img)
TextView title = (TextView)item.findViewById(R.id.title);
TextView info = (TextView)item.findViewById(R.id.info);
img.setImageResource(R.drawable.ic_launcher);
title.setText("Hello");
info.setText("world");
return item;
}
下面是第二种优化:
对convertView进行判断
如果convertView为空则用layoutinflater对布局进行加载,如果convertView不为空则对convertView进行重用
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null)
{
convertView = LayoutInflater.from(getCONTENT().inflate(R.layout.list_item,null)));
}
TextView title = (TextView)convertView.findViewById(R.id.title);
TextView info = (TextView)ConvertView.findViewById(R.id.info);
title.setText("Hello");
info.setText("world");
return convertView;
}
if(convertView == null)
{
convertView = LayoutInflater.from(getCONTENT().inflate(R.layout.list_item,null)));
}
TextView title = (TextView)convertView.findViewById(R.id.title);
TextView info = (TextView)ConvertView.findViewById(R.id.info);
title.setText("Hello");
info.setText("world");
return convertView;
}
下面试第三种优化:
convertView+ViewHolder
class ViewHolder
{
public TextView title;
public TextView info;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null)
{
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_item, null);
holder.title = (TextView)item.findViewById(R.id.title);
holder.info = (TextView)item.findViewById(R.id.info);
convertView.setTag(holder);
}else
{
holder = (ViewHolder)convertView.getTag();
holder.title.setText("Hello");
holder.info.setText("World");
}
return convertView;
}
{
public TextView title;
public TextView info;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null)
{
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_item, null);
holder.title = (TextView)item.findViewById(R.id.title);
holder.info = (TextView)item.findViewById(R.id.info);
convertView.setTag(holder);
}else
{
holder = (ViewHolder)convertView.getTag();
holder.title.setText("Hello");
holder.info.setText("World");
}
return convertView;
}
3 0
- BaseAdapter的使用以及优化
- BaseAdapter 自定义适配器的使用以及优化
- 优化使用的BaseAdapter
- BaseAdapter的使用与优化
- BaseAdapter的使用与优化
- BaseAdapter的使用与优化
- BaseAdapter的使用与优化
- BaseAdapter的使用与优化
- BaseAdapter的使用及优化
- Android中的BaseAdapter的使用极其优化
- 【J】BaseAdapter的使用与优化
- 关于BaseAdapter的使用及优化心得
- 数据适配器BaseAdapter的使用与优化
- BaseAdapter(数据适配器)的使用与优化
- BaseAdapter使用与优化
- BaseAdapter优化使用
- BaseAdapter使用ViewHolder优化
- baseAdapter出现IllegalStateException错误的问题,以及优化方案
- poj3352 Road Construction 缩点
- Redis 数据类型
- Linux哲学思想
- Python模块受欢迎排行榜Top200
- 浏览器同源策略及其规避方法
- BaseAdapter的使用以及优化
- jvm类加载机制
- Java之——Java mail邮件开发实战
- 利用gson将JSON格式转为Map
- 数据结构实验之二叉树四:还原二叉树
- 用Python爬虫爬取豆瓣TOP250电影
- Swift TextField
- ajax解决中文数据乱码问题
- 连续子数组的最大和