Android-android中的adapter数据在哪里加载较好?

小组聊天灌水 小组聊天灌水 主题:993 回复:2175

Android-android中的adapter数据在哪里加载较好?

灵芸 发布于 2017-02-03 字数 208 浏览 1049 回复 1

在list中的adapter中的数据,经常是从网络或者数据库中的加载的。这个数据可以在activity中加载,也可以在adapter加载。

每次使用的时候总让我很纠结,在哪里会更方便些呢?为什么?欢迎大家给提供一个建议。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

晚风撩人 2017-05-13 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的面向对象思想