`
zhangfy068
  • 浏览: 148387 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

自定义一个ArrayListAdapter

 
阅读更多
/*
 * Copyright (C) 2009 Teleca Poland Sp. z o.o. <android@teleca.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package grimbo.android.demo.adapter;

import java.util.ArrayList;

import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;

/**
 * Nice wrapper-abstraction around ArrayList
 * 
 * @author Lukasz Wisniewski
 *
 * @param <T>
 */
public abstract class ArrayListAdapter<T> extends BaseAdapter{
	
	protected ArrayList<T> mList;
	protected Activity mContext;
	protected ListView mListView;
	
	public ArrayListAdapter(Activity context){
		this.mContext = context;
	}

	@Override
	public int getCount() {
		if(mList != null)
			return mList.size();
		else
			return 0;
	}

	@Override
	public Object getItem(int position) {
		return mList == null ? null : mList.get(position);
	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	abstract public View getView(int position, View convertView, ViewGroup parent);
	
	public void setList(ArrayList<T> list){
		this.mList = list;
		notifyDataSetChanged();
	}
	
	public ArrayList<T> getList(){
		return mList;
	}
	
	public void setList(T[] list){
		ArrayList<T> arrayList = new ArrayList<T>(list.length);  
		for (T t : list) {  
			arrayList.add(t);  
		}  
		setList(arrayList);
	}
	
	public ListView getListView(){
		return mListView;
	}
	
	public void setListView(ListView listView){
		mListView = listView;
	}

}

 使用方法

 1、自定义一个adapter

public class PurpleAdapter extends ArrayListAdapter<PurpleEntry>

 2、

//存入一个自定义泛型
private ArrayList<PurpleEntry> browseListEntry;

mBrowseJamendoPurpleAdapter.setList(browseListEntry);

 

3、在自定义PurpleAdapter 中使用

if(mList.get(position).getText() != null){
			holder.text.setText(mList.get(position).getText());

 

分享到:
评论

相关推荐

    给FastReport增加一个自定义函数

    1. **创建函数源代码**:首先,你需要编写一个包含自定义函数的Pascal源代码文件,例如`Frfun2.dpk`和`Frfuns3d.pas`中的内容。这个源代码将实现函数的具体逻辑。比如,`Frfuns3d.pas`可能包含了一个三维图表处理的...

    C# WinForm 自定义CheckBox

    例如,可以添加一个自定义的OnPaint方法来改变CheckBox的绘制样式,或者添加自定义的Click事件处理来实现更复杂的行为。 ```csharp public partial class CheckBoxEx : Control { public CheckBoxEx() { ...

    自定义控件(自定义属性)

    本篇将深入探讨如何创建一个带有自定义属性的控件,并通过实例演示如何在布局文件中使用这些属性。 首先,创建自定义控件需要继承已有的View或ViewGroup类。在这个例子中,我们可以假设我们创建了一个名为...

    freemarker 自定义freeMarker标签

    这通常是通过`Configuration`对象的`setSharedVariable`方法完成的,将你的自定义指令类实例绑定到一个特定的名字,这个名字就是你在模板中使用的标签名。 3. 使用自定义标签:在模板文件中,你可以像使用内置标签...

    FreeSwitch完整的自定义模块定义和改善自定义事件的例子

    要创建自定义事件,你需要编写一个ESL(Event Socket Library)事件处理器。通过这个库,你可以发送和接收事件,与FreeSwitch进行交互。事件的定义通常在C语言的源代码文件中完成,包括事件名称、数据结构和处理函数...

    自定义组合控件实现

    在IT行业中,自定义组合控件的实现是Android开发中一个重要的知识点,它涉及到UI设计、自定义View以及布局管理等多个领域。自定义控件可以让开发者根据特定需求创建出具有独特功能和外观的用户界面元素,提升应用的...

    C#的自定义组件和自定义控件

    在.NET Framework中,C#提供了一个强大的平台来创建自定义组件和控件,这使得开发者可以扩展.NET Framework的基础功能,实现特定的需求。本项目聚焦于C#中的自定义组件和控件开发,涵盖了一些常见的实用功能,如速选...

    C#自定义控件库

    自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户体验优化上。 自定义控件的创建通常涉及以下几个关键知识点: 1. **继承与派生**:在C#中,自定义控件通常是通过继承已有的系统控件(如Button、Label...

    C#自定义控件之-自定义MessageBox

    本主题将深入探讨如何在C#中自定义一个类似于系统默认`MessageBox`的控件。 `MessageBox`是.NET Framework提供的一种标准对话框,它用于向用户显示信息、询问问题或确认操作。然而,系统默认的`MessageBox`功能有限...

    iOS UITabBarController(自定义, tarBar中间有自定义按钮)

    3. 使用自定义视图:可以创建一个继承自`UIView`的类,然后在`UITabBarController`的`tabBar`属性中替换为这个自定义视图,从而实现自定义布局。 对于在`tabBar`中间添加自定义按钮的需求,通常有两种方法: 1. ...

    jsp 自定义标签实例

    本实例将深入探讨如何实现一个简单的JSP自定义标签。 首先,自定义标签的实现主要依赖于两个核心概念:Tag接口和TagSupport类。`Tag`接口定义了自定义标签必须实现的方法,如`doStartTag()`和`doEndTag()`,它们...

    3000个PS自定义形状

    在Photoshop(PS)这个强大的图像处理软件中,自定义形状是一个非常实用的功能,它提供了大量预先设计好的图形,用户可以方便地导入和使用这些形状,以提高创作效率。"3000个PS自定义形状"这个资源集合涵盖了丰富的...

    springboot工程自定义response注解、自定义规范化返回数据结构

    在Spring Boot中,可以创建一个自定义注解,例如`@CustomResponse`,用于标记控制器方法,指示该方法应返回特定的数据结构。这个注解通常会包含一些元信息,如状态码、消息等,以便在处理过程中填充到返回结果中。...

    Java8并行流中自定义线程池操作示例

    下面的例子中,我们有一个并行流,这个并行流使用了一个自定义的线程池去计算1到 1,000,000的和。 知识点:可以使用ForkJoinPool的构造方法并设定并行级别来创建一个自定义的线程池。 4. 总结 我们简要地看了一下...

    QT自定义窗口 自由拖动 自定义标题

    - 创建一个自定义的标题区域,这通常是一个QWidget子类,包含标题文本和关闭、最小化、最大化按钮。 - 在标题区域上设置鼠标事件处理器,监听鼠标按下和移动事件,实现窗口拖动功能。当鼠标按下时记录当前位置,...

    C# WinForm 自定义 RadioButton

    创建自定义RadioButton的第一步是创建一个新的UserControl。在Visual Studio中,右键点击项目,选择“添加”-&gt;“用户控件”。然后,在新打开的设计视图中,将RadioButton控件拖放到UserControl上。接下来,我们可以...

    安卓自定义控件相关-里面是一个自定义尺子控件可实现拖动显示自定义距离等.rar

    这个压缩包提供的资源是一个自定义尺子控件,它允许用户通过拖动来显示自定义的距离,从而为应用程序添加了互动性和实用性。下面将详细介绍自定义控件的概念、创建过程以及这个尺子控件可能涉及的关键技术点。 1. ...

    Netty4编写服务器客户端,自定义编解码,发送自定义消息

    运行服务器端的启动类,然后运行客户端的启动类,客户端将会发送一个自定义的消息到服务器,服务器接收到消息后,通过自定义的编解码器解析,然后返回相同格式的消息给客户端。客户端接收到消息后,同样通过自定义的...

    android 自定义view及自定义属性

    在`10.DefineViewDemo`这个示例中,可能包含了一个名为`DefineView`的自定义View,它可能包含了一些自定义属性,比如颜色、边框宽度等。通过重写`onDraw()`来绘制特定形状,同时在`onInitializeHierarchyView()`或...

    java 自定义异常实例一

    在这个例子中,`CustomException`是一个自定义异常类,它扩展了`Exception`类。`CustomException`提供了两个构造器:一个无参构造器,调用父类的无参构造器;另一个接受字符串参数的构造器,用于传递错误信息。此外...

Global site tag (gtag.js) - Google Analytics