`

android listView的BaseAdapter的抽取

 
阅读更多
/**
* BaseAdapter的抽取
* @author xu-pc
*
* @param <T>
* 泛型数据的格式
* 需实现getHolder()
*/
public abstract class SuperBaseAdapter<T> extends BaseAdapter{
private List<T> mData;
/*public SuperBaseAdapter(List<T> list) {
this.mData = list;
}*/
public SuperBaseAdapter(List<T> data) {
this.mData = data;
}

@Override
public int getCount() {
return mData.size();
}

@Override
public Object getItem(int position) {
return mData.get(position);
}

@Override
public long getItemId(int position) {
return position;
}
 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
BaseHolder holder = null;
if(convertView == null){
holder = getHolder();
}else{
holder = (BaseHolder) convertView.getTag();
}
holder.setData(mData.get(position));
return holder.convertView;
}
public abstract BaseHolder getHolder();


}
/**
* 抽取的holder
* @author xu-pc
*
* @param <T>
* 数据的泛型需要在子类中设定
*/
public abstract class BaseHolder<T>{
/**
* 1.布局文件 convertView
* 2.holder 绑定
* 3.数据mData
*/
public View convertView;
public T mData;
public Context context;


public BaseHolder() {
convertView = initView();
convertView.setTag(this);//绑定tag
}

public void setData(T dada){
this.mData = dada;
refreshView();
}
public abstract void refreshView();//数据设置

public abstract View initView();
}
//使用案例
/**
* 设置ListView的适配器
* @author zhenggangyao
*
*/
class OrderReceiverAdapter extends SuperBaseAdapter<OrderReceivertDTO>{

public OrderReceiverAdapter(List<OrderReceivertDTO> data) {
super(data);
}

@Override
public BaseHolder getHolder() {
return new OrderReveiverHolder();
}
}

public class OrderReveiverHolder extends BaseHolder<OrderReceivertDTO> {

private TextView tv_time;//发件的日期时间
private TextView tv_type;//快件类型
private TextView tv_name;//发件人姓名
private TextView tv_phone;//发件人电话
private TextView tv_address;//发件人详细地址

@Override
public void refreshView() {
tv_time.setText(mData.getSendConpany());
tv_type.setText(mData.getPackageClassName());
tv_name.setText(mData.getSendName());
tv_phone.setText(mData.getSendPhone());
tv_address.setText(mData.getSendAddress());
}

@Override
public View initView() {
View view = View.inflate(AppContext.getInstance(), R.layout.item_fragment_main, null);
tv_time = (TextView) view.findViewById(R.id.txt_date);
tv_type = (TextView) view.findViewById(R.id.txt_receiver_state);
tv_name = (TextView) view.findViewById(R.id.txt_name);
tv_phone = (TextView) view.findViewById(R.id.txt_phonenum);
tv_address = (TextView) view.findViewById(R.id.txt_address);
return view;
}
}
分享到:
评论

相关推荐

    android BaseAdapter listView优化

    在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表。BaseAdapter则是与ListView配合使用的数据适配器,负责将数据绑定到ListView的各个视图上。本篇文章将深入探讨ListView与BaseAdapter的...

    android listview单击事件

    在Android开发中,ListView是应用最广泛的视图组件之一,尤其在展示大量数据时,它以列表形式高效地展示信息。本教程将深入探讨ListView的单击事件处理,以及如何在实际项目中实现这一功能。 首先,理解ListView的...

    19Android-16-listviewBaseAdapter.mp4

    19Android-16-listviewBaseAdapter.mp4

    Android之ListView+BaseAdapter左右按键切换

    在这个"Android之ListView+BaseAdapter左右按键切换"的项目中,我们将会深入探讨如何利用ListView结合BaseAdapter实现通过键盘左右按键来切换并更新ListView中的数据。BaseAdapter是Android系统提供的一种适配器,它...

    Android中ListView常用方式:使用BaseAdapter

    本篇文章将深入探讨如何在Android中使用BaseAdapter来实现ListView的数据绑定。BaseAdapter是Android系统提供的一种通用适配器,它允许我们将自定义的数据集与ListView进行关联。 首先,理解ListView的工作原理至关...

    SQLite 和 listview baseAdapter结合的例子

    而ListView是Android UI设计中常用的一个组件,用于展示大量的列表数据。将SQLite与ListView结合,可以实现动态加载、高效展示和操作数据库中的数据。 在Android开发中,当需要展示大量数据时,通常会用到ListView...

    ListView的使用自定义BaseAdapter

    本篇主要讲解如何在Android Studio中使用ListView,并结合自定义的BaseAdapter来实现数据的绑定和显示。 首先,我们需要在布局文件中添加ListView组件。在res/layout目录下的xml布局文件中,可以这样定义一个...

    BaseAdapter的使用与优化

    在Android开发中,ListView是展示大量数据常用的组件,而BaseAdapter是它的重要伙伴,用于将数据绑定到ListView的各个Item视图上。本教程通过一个Eclipse下的Android工程实例,详细讲解了BaseAdapter的使用方法以及...

    Android ListView边框圆角美化

    3. **适配器的使用**:在适配器类中,如`ArrayAdapter`或自定义的`BaseAdapter`,你需要使用`getView()`方法来返回ListView项的视图。确保在该方法中加载你刚才创建的布局文件,并正确地绑定数据。 4. **性能优化**...

    android的listview嵌套listview,列表嵌套列表 android studio版本

    在Android Studio中,我们通常会创建一个自定义的Adapter,继承自BaseAdapter或者ArrayAdapter,重写其方法以提供数据和视图的绑定。 对于嵌套的ListView,我们需要创建两个Adapter,一个用于父ListView,另一个...

    android listview 固定表头,固定前几列

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当列表项过多时,滚动时表头(Header)会随着滚动消失,给用户查看和理解数据带来不便。为了解决这个问题,开发者通常会实现一个固定...

    Android ListView 下拉刷新、上拉加载

    1. 自定义适配器(Adapter):适配器是连接ListView与数据源的关键,我们可以扩展BaseAdapter或ArrayAdapter,根据需要重写getView()方法来定制每个列表项的布局和显示。 2. 自定义滚动效果:通过重写ListView的...

    Android ListView简单示例

    在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表。本示例将详细介绍如何在Android Studio中创建一个简单的ListView。首先,我们需要理解ListView的基本结构和工作原理。 ListView是一个可...

    Android_BaseAdapter_ListView

    首先,`BaseAdapter`是Android SDK提供的一种适配器,它是一个抽象类,为各种视图(如ListView)提供了数据绑定的功能。开发者需要继承BaseAdapter,并实现其四个主要方法:`getCount()`、`getItem(int position)`、...

    Android listview和viewpager解决冲突 滑动冲突

    Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631

    Android中ListView,SQLite,BaseAdapter的结合源码

    在Android开发中,ListView、SQLite和BaseAdapter是三个至关重要的组件,它们共同协作,使得应用程序能够展示和管理大量数据。ListView是一种可滚动的视图,用于显示一系列项,而SQLite是一个轻量级的数据库系统,...

    BaseAdapter_listview

    `BaseAdapter`是Android SDK提供的一种适配器,它是所有自定义ListView适配器的基础类,用于将数据绑定到ListView上。本示例"BaseAdapter_listview"正是通过自定义BaseAdapter来实现ListView的展示。 首先,我们要...

    android ListView 网格布局

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的网格布局模式使得数据以多列的形式展示,增强了界面的可读性和用户体验。本文将深入探讨如何在Android中实现一个基于ArrayAdapter的网格...

    android listview 下拉刷新 动态加载数据 图文混排

    在Android开发中,ListView是一种常用的组件,用于展示大量可滚动的数据。本教程将重点讲解如何在ListView中实现下拉刷新和动态加载数据的功能,同时处理图文混排的问题。 首先,我们要引入SwipeRefreshLayout库,...

    android listView 适配器demo

    在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常配合适配器(Adapter)使用。本示例“android listView 适配器demo”将详细讲解如何利用适配器机制来动态填充ListView的数据。 首先...

Global site tag (gtag.js) - Google Analytics