android通用adapter,Android通用ListViewAdapter的编写。
一般来说,一个ListView的Adapter是继承自BaseAdapter,然后改写其中的getCount()、getItem()、getItemId()、getView()等方法。其中最重要的是getView()方法,其他的几个方法基本上实现的过程类似,这就提供了抽取出公共方法的可行性。
那么,至于最重要的getView()方法,可采取另一套解决方法。
下面是常规的方法,采用viewholder,根据ID找到具体view,然后再进行操作
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
GalleryView gv = null;
if(arg1 == null) {
gv = new GalleryView();
arg1 = ViewContainer.inflate(R.layout.gallery, null);
gv.iv = (ImageView) arg1.findViewById(R.id.typeimageview);
arg1.setTag(gv);
}else {
gv = (GalleryView) arg1.getTag();
}
gv.iv.setImageResource(pic[arg0 % pic.length]);
gv.iv.setAdjustViewBounds(true);
return arg1;
}
那么先考虑把getView方法抽取出来。
通常为了节省资源,用一个ViewHolder储存View,然后对具体的View进行操作。
先编写一个ViewHolder类。(可以直接复制到项目里面用,还可以根据自己的需要来添一些代码,可参考setText等方法)
package org.out.sh.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;
/**
* Created by Hao_S on 2015/4/28.
*/
public class ViewHolder {
private SparseArray mViews;
private int mPosition;
private View mConvertView;
public ViewHolder(Context context, ViewGroup parent, int layoutId, int position) {
this.mPosition = position;
this.mViews = new SparseArray();
mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false);
mConvertView.setTag(this);
}
public static ViewHolder get(Context context, View convertView, ViewGroup parent, int layoutId, int position) {
if (convertView == null) {
return new ViewHolder(context, parent, layoutId, position);
} else {
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
viewHolder.mPosition = position;
return viewHolder;
}
}
public T getView(int viewId) {
View view = mViews.get(viewId);
if(view ==null) {
view = mConvertView.findViewById(viewId);
mViews.put(viewId,view);
}
return (T) view;
}
public View getConvertView() {
return mConvertView;
}
public ViewHolder setText(int viewId, String text) {
TextView tv = getView(viewId);
tv.setText(text);
return this;
}
public ViewHolder setImageView (int viewId, int resId) {
ImageView imageView = getView(viewId);
imageView.setImageResource(resId);
return this;
}
public ViewHolder setImageView(int viewId, Bitmap bitmap) {
ImageView imageView = getView(viewId);
imageView.setImageBitmap(bitmap);
return this;
}
public ViewHolder setImageView(int viewId, String url) {
ImageView imageView = getView(viewId);
// volley
return this;
}
public ViewHolder setRatingBar(int viewId, int numStars, int rating) {
RatingBar ratingBar = getView(viewId);
ratingBar.setNumStars(numStars);
ratingBar.setRating(rating);
return this;
}
}
CommonAdapter,重点看getVIew里面的ViewHolder的使用。
package org.out.sh.utils;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.List;
/**
* Created by NarutoSong on 2015/4/28.
*
*/
public abstract class CommonAdapter extends BaseAdapter {
protected Context context;
protected List datas;
protected LayoutInflater layoutInflater;
private int layoutId;
public CommonAdapter(Context context,int layoutId, List datas) {
this.context = context;
layoutInflater.from(context);
this.datas = datas;
this.layoutId = layoutId;
}
@Override
public int getCount() {
return datas.size();
}
@Override
public T getItem(int position) {
return datas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = ViewHolder.get(context, convertView, parent, layoutId, position);
convert(viewHolder, getItem(position));
return viewHolder.getConvertView();
}
public abstract void convert(ViewHolder viewHolder, T t);
}
在使用的时候,继承CommonAdapter,实现convert方法。
@Override
public void convert(ViewHolder viewHolder, Code code) {
viewHolder.setText(R.id.username, code.getUsername());
}
android通用adapter,Android通用ListViewAdapter的编写。相关推荐
- android textview adapter,Android在FragmentPagerAdapter中的Fragment中设置TextView文本
这个让我疯了.基本上,我想创建一个ViewPager并为其添加一些片段.然后,我想做的就是在Fragment的TextViews中设置一个值.我可以添加Fragments,并且它们会附加,但是当我在第 ...
- android单元测试adapter,Android 单元测试
我在学习Android的时候最头特的就是 测试! 虚拟机慢有不舒服,真机也是觉得很慢,因为要频繁的安装应用,所以Android 单元测试的使用就显得尤为重要了. 想实现简单的单元测试不是很难,只要几步 ...
- Android RecyclerView设计通用Adapter
RecylerView 的使用频率现在也算做是很高了吧?使用起来的确是挺方便的,也容易实现一些比较好看的效果 一.一般步骤 一般的设计流程都是如下所示 首先是需要一个 JavaBean 来承载数据,包 ...
- Android中适用于ListView、GridView等组件的通用Adapter
今天随便逛逛CSDN,看到主页上推荐了一篇文章Android 高速开发系列 打造万能的ListView GridView 适配器,刚好这两天写项目自己也封装了相似的CommonAdapter,曾经也在 ...
- android开源系统brvah,Android Jetpack之通用Adapter(Databinding+BRVAH)
之前发过一个databinding版的通用adapter,能实现一般需求,不过功能比较简陋,实际开发中大家更倾向于使用BRVAH等功能丰富的第三方框架.现在给出一个基于BRVAH的databindin ...
- Android 混淆机制、通用模板
Proguard介绍 Proguard被人们熟知的是它的混淆功能,根据Proguard帮助文档的描述,Proguard可以对Java class 文件进行shrink,optimize,obfusca ...
- Android直播开发之旅(9):OkCamera,Android 相机应用开发通用库
OkCamera,Android 相机应用开发通用库 转载请声明出处:http://blog.csdn.net/andrexpert/article/details/79302576 明天就可以回家过 ...
- android 屏幕圆角,Android通用圆角布局(兼容Android P)
Android通用圆角布局(兼容Android P) Android通用圆角布局,可以解决Android P版本xfermode方案裁剪黑边问题和xfermode在列表view中使用滑动时EGL内存泄 ...
- Android网络加载通用LoadingView
我们在进行网络加载的时候,有时候需要一个能覆盖界面的loading界面,比如第一次进应用,加载数据的时候,需要这么个loading页面,体验比较友好,再比如第一次进来,数据加载失败了,或者无网络了,需 ...
最新文章
- SSO(Single Sign-on) in Action
- 数组去重与数组扁平化
- 记一次使用 Lombok 翻车造成的事故!
- Vimium插件让键盘党像操作Vim一样操作Chrome
- following symbols must have non local/private scope错误问题解决方法
- java范例_Java范例集锦(一)
- 将数字转化为液晶显示屏的样子
- xampp mysql 查询很慢_如何开启mysql的慢查询机制
- php break 用法,PHP break语句
- 全局光照技术解析Global Illumination Explained
- centos怎么装python_centos下安装python的过程
- VSCode配置PyQt5和designer
- python有趣的代码-盘点10个一行强大的、有趣的Python源代码
- 2019交大计算机考研分数线,上海交大2019考研计算机软件与理论的复式分数..._考研_帮考网...
- 前中后序遍历的相互转化(附代码)
- 大学的第一堂必修课:军训
- getResource和getResourceAsStream
- 流利阅读12.31 The science of giving gifts your loved ones won’t want to return
- 苹果ipad找不到服务器怎么办,找不到网络怎么办 ipad无法加入无线网络解决方法【详解】...
- NLPCC2013中文微博细粒度情感识别(一)