Android-android中的adapter数据在哪里加载较好?
在list中的adapter中的数据,经常是从网络或者数据库中的加载的。这个数据可以在activity中加载,也可以在adapter加载。
每次使用的时候总让我很纠结,在哪里会更方便些呢?为什么?欢迎大家给提供一个建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个可根据你的项目需求,做出最佳的数据适配器(Adapter)选择;
一般项目中会出现以下几种情况:
1,列表中的数据来源,是来自本地数据库(SQLite)中,且这些数据完全可以直接被采用列表中的显示数据,那么,适配器的选择就可以采用:
android.widget.CursorAdapter
其参数不做解释;
2,数据来源于网络,本地文件流读取或转换后的数据库数据等,其适配器方式可采用多种,数据源若是List<Map<String, Object>>方式,可直接采用:
android.widget.SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
其参数不做解释
若数据源是Javabean,List<Map<String, Object>>或其他方式,可采用其共同的适配器,即继承android.widget.BaseAdapter:
package com.hwttmtm.client.service.comm;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
/**
* 列表数据适配器
* <HR>
* 作者:孙博
* <P>
* 最后修改时间:2012-7-21 上午11:51:49
* <P>
* 电子邮件:sunb@hwttnet.com
* <P>
* QQ:497733379
* <P>
* Gmail: sunbo.java@gmail.com
*/
public class CustomAdapter extends BaseAdapter
{
private final List<Object> objects;
/**
* 构造方法,初始化相关数据和方法
*
* @param context
* 引用一个已经被实例化的上下文对象
* @param objects
* 已经有数据且至少已经有一条数据的适配器数据源
*/
public CustomAdapter(Context context, List<Object> objects)
{
this.objects = objects;
}
/**
* 返回数据源中的数据总量
*
* (非 Javadoc)
*
* @return
* @see android.widget.Adapter#getCount()
*/
@Override
public int getCount()
{
return objects.size();
}
/**
* 返回点击列表之后的当前Item数据源对象
*
* (非 Javadoc)
*
* @param position 被点击的Item所在列表中的位置
* @return
* @see android.widget.Adapter#getItem(int)
*/
@Override
public Object getItem(int position)
{
return objects.get(position);
}
/**
* 返回点击列表之后的当前Item ID
*
* (非 Javadoc)
*
* @param position 被点击的Item所在列表中的位置
* @return
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int position)
{
return position;
}
/**
* 此方法不做解释
*
* (非 Javadoc)
*
* @param position
* @param convertView
* @param parent
* @return
* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
return null;
}
}
以上各种适配器的选择,通常情况下,我个人更倾向于最后一种,因为这样做的好处有:
1,逻辑清晰,代码容易编写
2,可维护性强,无论是将来的增加还是删除都更容易修改
3,从某种程度上将,更符合Java的面向对象思想