`
flyering
  • 浏览: 38510 次
  • 性别: Icon_minigender_1
  • 来自: 河北保定
社区版块
存档分类
最新评论

android 重写adpter

 
阅读更多
重写系统的simpleadpter:
public class ListSimpleAdpter extends SimpleAdapter{
   //要使用到的数据源
    private List<Map<String, Object>> data=new ArrayList<Map<String, Object>>();
   //填充数据的资源文件
    private int resource;
    private String[] from;
    private Context context;
    public ListSimpleAdpter(Context context,
            List<Map<String, Object>> data, int resource, String[] from,
            int[] to) {
        super(context, data, resource, from, to);
        this.context=context;
        this.data=data;
        this.resource=resource;
        this.from=from;
    }
    //item的总行数
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return data==null?0:data.size();
    }
    //item对象
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    //item的id
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
   //绘制每一个item
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Holder holder = null;
        if(convertView==null)
        {
           convertView=LayoutInflater.from(context).inflate(resource, null);
          holder=new Holder();
          holder.imageView=(ImageView) convertView.findViewById(R.id.listitem_pic);
            holder.title=(TextView) convertView.findViewById(R.id.listitem_title);
            holder.content=(TextView) convertView.findViewById(R.id.listitem_content);
            convertView.setTag(holder);
        }else
        {
            holder=(Holder) convertView.getTag();
        }
        holder.imageView.setImageResource(Integer.parseInt(data.get(position).get(from[0]).toString()));
        holder.title.setText(data.get(position).get(from[1]).toString());
        holder.content.setText(data.get(position).get(from[2]).toString());
        return convertView;
    }
   
    class Holder{
        ImageView imageView;
        TextView title;
        TextView content;
    }
}   这里对于Adapter的优化,用的很古老的ViewHolder、ViewCache办法:public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Holder holder = null;
        if(convertView==null)
        {
            convertView=LayoutInflater.from(context).inflate(resource, null);
            holder=new Holder();
            holder.imageView=(ImageView) convertView.findViewById(R.id.listitem_pic);
            holder.title=(TextView) convertView.findViewById(R.id.listitem_title);
            holder.content=(TextView) convertView.findViewById(R.id.listitem_content);
            convertView.setTag(holder);
        }else
        {
            holder=(Holder) convertView.getTag();
        }
        holder.imageView.setImageResource(Integer.parseInt(data.get(position).get(from[0]).toString()));
        holder.title.setText(data.get(position).get(from[1]).toString());
        holder.content.setText(data.get(position).get(from[2]).toString());
        return convertView;
    }
   
    class Holder{
        ImageView imageView;
        TextView title;
        TextView content;
    }或者使用HashMap做缓存的方法:HashMap<Integer, View> m = new HashMap<Integer, View>();

public View getView(int position, View view, ViewGroup parent) {

  View convertView = m.get(position);
  if (convertView != null) {
    return convertView;
  } else {  
  convertView=LayoutInflater.from(context).inflate(resource, null);
  ImageView imageView=(ImageView) convertView.findViewById(R.id.listitem_pic);
  TextView title=(TextView) convertView.findViewById(R.id.listitem_title);
  TextView content=(TextView) convertView.findViewById(R.id.listitem_content);
   m.put(position, convertView);
   }
}
分享到:
评论

相关推荐

    Android自定义Adapter适配器

    在Android开发中,Adapter是一个至关重要的组件,它作为数据源与UI控件之间的桥梁,使得数据能够被适配并显示在界面中。本项目聚焦于自定义Adapter的实现,特别是如何将其应用于ListView的数据显示。 首先,理解...

    android应用源码Android重写listview实现下拉刷新.zip

    本教程将通过一个名为"android应用源码Android重写listview实现下拉刷新.zip"的压缩包,深入探讨如何在Android中自定义ListView并实现下拉刷新功能。这个压缩包包含了一份用于学习和参考的源码,主要涉及以下几个...

    重写Adapter实现Ios TableView效果

    本教程将深入探讨如何通过重写Adapter来达到这一目标,主要关注ListView的使用和适配器的定制。 首先,`ListView`是Android中用于展示可滚动列表的视图组件,它允许开发者在有限的屏幕空间内展示大量数据。与iOS的...

    android之各种Adapter加载数据

    在Android开发中,Adapter是一个非常重要的组件,它起到了数据源与UI展示之间的桥梁作用。本文将深入探讨Android的Adapter机制,以及如何使用各种Adapter来加载数据。 首先,我们需要理解Adapter的基本概念。...

    Android ListView adapter不同布局

    总结来说,实现“Android ListView adapter不同布局”涉及自定义Adapter,重写关键方法,特别是`getView()`,并处理好数据源和布局的对应关系。在处理嵌套ListView时,需要考虑到性能优化,避免过度复杂的设计,以...

    android中adapter的使用

    在Android开发中,Adapter是一个非常重要的组件,它起到了数据与视图之间的桥梁作用。Adapter类允许我们将数据集合(如数组或列表)绑定到UI组件,如ListView、GridView或Spinner等。在Android中,我们通常会遇到三...

    Android Adapter的使用

    在Android开发中,Adapter是一个非常重要的组件,它起到了数据源与UI展示之间的桥梁作用。本文将深入探讨Android适配器的使用,特别是针对初学者,旨在帮助他们更好地理解和掌握这一核心概念。 首先,我们来理解...

    Android支持DataBinding的RecyclerView通用Adapter

    总结起来,"Android支持DataBinding的RecyclerView通用Adapter"是一个高效的解决方案,它整合了`DataBinding`的便利性和`BRVAH`的实用性,为开发者提供了一个强大且易用的工具,帮助他们更好地管理和展示列表数据。...

    Android 重写Listview实现左滑删除功能

    本项目"Android 重写Listview实现左滑删除功能"旨在教你如何在ListView中添加滑动删除的交互效果。 首先,我们需要理解ListView的工作原理。ListView通过复用View(也称为ViewHolder模式)来优化性能,减少内存消耗...

    android自定义控件介绍,重写控件

    这时,我们就可以通过重写ListView并结合Adapter来实现这个功能。 学习自定义控件,开发者需要掌握Android图形系统、事件处理机制以及布局管理的基本知识。同时,熟悉Android SDK提供的各种内置控件,理解它们的...

    android listview 自反射 adapter

    通常,开发者会创建一个继承自BaseAdapter的自定义Adapter,重写其中的方法,如`getCount()`、`getItem()`、`getItemId()`以及`getView()`等,来实现数据的绑定和视图的创建。 然而,使用反射技术,我们可以简化这...

    Android_Adapter 讲解

    在Android开发中,Adapter是一个至关重要的组件,它作为数据与视图之间沟通的桥梁,使得数据能够被适配并展示在各种ViewGroup中,如ListView、GridView或Spinner等。Adapter的使用极大地简化了数据绑定的过程,让...

    Android之Adapter用法总结

    - 当系统提供的Adapter不能满足需求时,可以继承BaseAdapter并重写其方法,如`getView()`,`getCount()`,`getItem()`等,以实现自定义的视图展示和数据处理逻辑。 6. **Adapter优化** - 为了提高性能,Adapter的...

    android 一个对adapter的封装使用

    首先,BaseAdapter是Android SDK提供的一个抽象类,它是适配器家族的基础,开发者可以继承它并重写其方法来满足自定义需求。BaseAdapterDemo可能是对这个基础类进行的优化和扩展,使得创建自定义Adapter变得更加简洁...

    自定义expandable listview,可添加图标(重写adapter)

    在这个项目中,我们将会深入探讨如何自定义一个带有图标的ExpandableListView,通过重写adapter来实现这一功能。 首先,我们需要了解ExpandableListAdapter,它是ExpandableListView的核心组件,负责数据的绑定和...

    android 重写的table

    在Android开发中,"android 重写的table"通常指的是对原生的`TableLayout`或者`GridView`等表格布局进行自定义,以满足特定需求。`TableLayout`是Android提供的一个用于展示表格样式的布局,它由多个`TableRow`组成...

    Android简单使用ListView和Adapter

    本教程将详细介绍如何在Android中简单使用ListView和Adapter来实现数据显示,并演示如何添加删除功能。 首先,你需要在布局文件中定义一个ListView。在XML文件中,你可以使用`&lt;ListView&gt;`标签来创建ListView,并为...

    android应用源码Android重写listview实现下拉刷新源码.zip

    本教程将深入探讨如何在Android应用中重写ListView,以实现下拉刷新的功能。 首先,我们要理解下拉刷新的基本概念。下拉刷新是指用户在ListView顶部向下拉动,触发一个更新数据的操作,通常用于从服务器获取最新...

    Android Adapter里面嵌套ListView实例详解

    Android Adapter里面嵌套ListView实例详解 Android Adapter里面嵌套ListView实例详解是Android开发中的一种常见设计,即在一个ListView中嵌套另一个ListView。这种设计可以实现复杂的列表显示,但是需要特殊处理以...

Global site tag (gtag.js) - Google Analytics