功能特点:
简化大量重复代码
支持多布局
自定义图片加载
常用数据操作
view复用
RecyclerView item 点击和长按事件
dependencies { compile 'com.classic.adapter:commonadapter:1.0' //项目中使用到RecyclerView,需要添加依赖 compile 'com.android.support:recyclerview-v7:23.2.0'}
ListView/GridView 使用示例:
List<News> newsList = ...; //单布局文件 listView = (ListView) findViewById(R.id.listview); listView.setAdapter(new CommonAdapter<News>(context, //item布局文件 R.layout.item_none_picture, newsList ) { @Override public void onUpdate(BaseAdapterHelper helper, News item) { //BaseAdapterHelper详细用法,见下方 helper.setText(R.id.xxx, item.getTitle()) //可实现ImageLoad接口,进行图片自定义加载方式,demo里面使用的Glide .setImageLoad(new GlideImageLoad()) .setImageUrl(R.id.xxx,item.getCoverUrl()); } }); //多布局文件 private final class MultipleLayoutAdapter extends CommonAdapter<News>{ public MultipleLayoutAdapter(Context context, int layoutResId, List<News> data) { super(context, layoutResId, data); } //多种布局重写此方法即可 @Override public int getLayoutResId(News item) { int layoutResId = -1; switch (item.getNewsType()){ case News.TYPE_NONE_PICTURE: //布局样式一 layoutResId = R.layout.item_none_picture; break; case News.TYPE_SINGLE_PICTURE: //布局样式二 layoutResId = R.layout.item_single_picture; break; case News.TYPE_MULTIPLE_PICTURE: //布局样式三 layoutResId = R.layout.item_multiple_picture; break; 更多的布局样式 ... } return layoutResId; } @Override public void onUpdate(BaseAdapterHelper helper, News item) { helper.setImageLoad(new GlideImageLoad()); switch (item.getNewsType()){ case News.TYPE_NONE_PICTURE: //布局样式一 helper.setText(R.id.xxx, item.getTitle()) .setImageUrl(R.id.xxx,item.getCoverUrl()); break; case News.TYPE_SINGLE_PICTURE: //布局样式二 helper.setText(R.id.xxx, item.getTitle()) .setImageUrl(R.id.xxx,item.getCoverUrl()); break; case News.TYPE_MULTIPLE_PICTURE: //布局样式三 helper.setText(R.id.xxx, item.getTitle()) .setImageUrl(R.id.xxx,item.getCoverUrl()); break; 更多的布局样式 ... } } }
本人最近接手一个项目,兴致勃勃的看了源码,一脸懵逼,这里就不吐槽了。列表是用的listview(没有用recyclerView),代码里面的适配器写法没有封装,很多重复的代码,看到头大,自己也懒得写。所以动手封装了一下,虽然这个功能的封装很常见了,以前也做过同样的事,但是没有记录,所以这次想着记下来。 adapter写法: /** * 万能通适配器---ListView,GridView */
有了这个CommonAdapter以后的Adapter就so easy 了。 1. 定义CommonAdapter package com.stephen.ifishing.adapter; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import andr
Android通用适配器CommonAdapter 1、刚完成一个小项目,项目中有多个页面,其中包含了许多ListView和GridView,避免不了要写很多的Adapter,当时就像那么多重复的代码,若是抽取一下就好了,由于时间紧迫,没有来得及抽取,刚好前几天看到慕课上《打造万能适配器》,本文算是对该视频的学习记录,按照自己的方式,对视频中的代码进行了稍稍的改动,废话说多了,下面进入主题… 2、
对于我们Android程序猿来说,listview算是最常见的控件之一了,当然listview是要和adapter配套使用的,下面我们就来看看常规的adapter操作 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if
package com.stephen.ifishing.adapter; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import andro
1.创建CommonAdapter类: public abstract class CommonAdapter02<T> extends BaseAdapter { protected Context mContext; protected List<T> datas; protected LayoutInflater mInflater; public Comm
先说明一下 这个万能的adapter必须和之前写的那个万能holder CommonAdapter一起结合使用 demo地址 下面是adapter代码 import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; impo
1.ViewFinder的实现 package com.mycollege.util; import java.lang.ref.WeakReference; import android.content.Context; import android.util.Log; import android.util.SparseArray; import android.view.LayoutIn
最近写Adapter写到吐,封装一个adapter共享: public abstract class CommonAdapter<T> extends BaseAdapter { protected LayoutInflater mInflater; protected Context mContext; protected List<T> mDatas; prot
CommonAdapter: /* * @Copyright (c) tianchenglin * @Author TCL * @Date 2016.7.5 */ package com.study.tcl.commonadapter; import android.content.Context; import android.view.View; import android
问题内容: 如何在Python3中将输入转义到MySQL数据库?我正在使用PyMySQL,并且工作正常,但是当我尝试执行以下操作时: 如果字符串具有或,则它将不起作用。我也尝试过: 问题在于该库(PyMySQL)使用了Python2.x的格式语法,该语法不再起作用。我也发现了这个可能的解决方案 在这里,但我不知道在何处添加此代码。这就是我得到的一切: 编辑:我解决了!在PyMySQL中,正确的方法
问题内容: 我感到困惑的是,在同一SQL Server实例中使用跨数据库查询的优缺点是什么? 我能想到的一件事是性能问题(查询将很慢),如果是这种情况,该问题的解决方案是什么? 请重点说明解决方案的优点和缺点,以便我可以放心地在两个数据库上工作。 我有两个数据库db1 Companies / CRM和db2 Products / E-commerce 问题答案: 您可能遇到的问题与管理有关。请在此
问题内容: 有多少个数据库系统使用JSON进行存储或传输?我知道: CouchDB MongoDB DBSlayer 我记得我在SO用户的个人资料中看到了另一个供应商。该系统使用的是所谓的二进制JSON,但我不记得该产品的名称。 最近,似乎越来越多的DB项目正在将JSON用于持久性存储。其中一些甚至将HTTP用作传输层。 问题答案: MongoDb是使用二进制JSON存储格式的一种。我不知道是否还
问题内容: 我有一张桌子,大约有17个字段。我需要在此表中执行频繁的更新。但是问题是 每次我可能只更新几个字段 。在这种情况下,编写查询以进行更新的最佳方法是什么?我正在寻找一个选项,其中 值仅在不为null时才更新 。 例如,我在数据库Say A,B,C,D中有四个字段。用户更新say D的值。所有其他值保持不变。因此,我需要一个更新查询,该查询仅更新D的值,而其他值保持不变。因此,如果我将a,
问题内容: 我有一个专栏 组 。 群组 具有存储在group_types中的不同类型(买方,卖方,裁判)。只有当该组是买方类型时,它才具有另一种(更专门)的类型,例如电气和机械类型。 我对如何将其存储在数据库中感到有些困惑。 有人可以建议我一个数据库结构吗? 谢谢 问题答案: 将您的存储为层次结构表(带有或模型): : 将选择中的所有买家。 : 将选择任何数据库中的所有买家。 如果您不需要层次结构
问题内容: 我在同一服务器上的2个不同数据库中有2个相同的表。将数据从表复制到另一个表的最佳方法是什么? 问题答案: 使用: 存在是经过简化的,但是如果有主键/ auto_increment可以担心/等,那么您就省去了。
问题内容: 我想通过注释@Query通过Jpa存储库进行Join查询。我有三个表。 本机查询是: 现在我有了Table Hibernate实体,所以我在ApplicationRepository中尝试过 日志说 意外的标记 有什么想法吗? 我的表实体 Application.java: Customer.java: User.java: 问题答案: 您不需要JPA中的ON子句,因为借助映射注释,J
问题内容: 我创建了一个新的Rails项目,调用 然后当我在目录中运行 我收到关注错误 我见过其他人遇到此错误,但他们通常是linux用户,并且我正在运行Windows。我试图重新安装Rails(railsinstaller.org)和mysql 5.5。我既使用了32位版本,也使用了64位版本 问题答案: 这里似乎已经有几个问题。您尝试过他们的解决方案吗? 相关部分在这里: