package com.zzyuyou.recyclerviewdemo.Adapter;
import android.content.Context;
import android.os.Handler;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.zzyuyou.recyclerviewdemo.R;
import java.util.List;
/**
* . _ooOoo_
* . o8888888o
* . 88" . "88
* . (| -_- |)
* . O\ = /O
* . ____/`---'\____
* . . ' \\| |// `.
* . / \\||| : |||// \
* . / _||||| -:- |||||- \
* . | | \\\ - /// | |
* . | \_| ''\---/'' | |
* . \ .-\__ `-` ___/-. /
* . ___`. .' /--.--\ `. . __
* . ."" '< `.___\_<|>_/___.' >'"".
* . | | : `- \`.;`\ _ /`;.`/ - ` : | |
* . \ \ `-. \_ __\ /__ _/ .-` / /
* . ======`-.____`-.___\_____/___.-`____.-'======
* . `=---='
* .
* . .............................................
* . 佛祖镇楼 BUG辟易
* . 佛曰:
* . 写字楼里写字间,写字间里程序员;
* . 程序人员写程序,又拿程序换酒钱。
* . 酒醒只在网上坐,酒醉还来网下眠;
* . 酒醉酒醒日复日,网上网下年复年。
* . 但愿老死电脑间,不愿鞠躬老板前;
* . 奔驰宝马贵者趣,公交自行程序员。
* . 别人笑我忒疯癫,我笑自己命太贱;
* . 不见满街漂亮妹,哪个归得程序员?
* .
* . 项目名称:RecyclerViewDemo
* . 包名:com.zzyuyou.recyclerviewdemo.Adapter
* . 类描述:
* . 创建人:LoveTing(zhengleilei)
* . 邮箱:ting970626@163.com
* . 创建时间:2017/6/5 16:00
* . 修改备注:
* . 版本号:V 1.0.0
*/
public class Adapter_three extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final int ITEM = 0;//头布局
public static final int ONE_ITEM = 1;//第一个布局
public static final int TWO_ITEM = 2;//第二个布局
//尾布局
public static final int FOOT_TYPE = 1111;
private Boolean isFootView = false;//是否添加了FootView
private String footViewText = "";//FootView的内容
private int max_count = 20;//最大显示数
private Context context;
private List<Bean> mDatas;
public Adapter_three(Context context, List<Bean> mDatas) {
this.context = context;
this.mDatas = mDatas;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//加载不同的布局
LayoutInflater mInflater = LayoutInflater.from(context);
RecyclerView.ViewHolder holder;
if (ONE_ITEM == viewType) {
View v = mInflater.inflate(R.layout.item_two, parent, false);
holder = new Adapter_three.OneViewHolder(v);
} else if (TWO_ITEM == viewType) {
View v = mInflater.inflate(R.layout.item_linear, parent, false);
holder = new Adapter_three.TwoViewHolder(v);
} else if (ITEM == viewType) {
View v = mInflater.inflate(R.layout.item, parent, false);
holder = new Adapter_three.HeaderViewHolder(v);
} else {
View v = mInflater.inflate(R.layout.item_foot, parent, false);
holder = new Adapter_three.FootViewHolder(v, FOOT_TYPE);
}
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//为不同的布局设置
if (holder instanceof Adapter_three.OneViewHolder) {
((Adapter_three.OneViewHolder) holder).tv.setText(mDatas.get(position).name);
ClickLitener(holder);
} else if (holder instanceof Adapter_three.TwoViewHolder) {
((Adapter_three.TwoViewHolder) holder).tv1.setText(mDatas.get(position).name);
((Adapter_three.TwoViewHolder) holder).tv2.setText(mDatas.get(position).nice);
ClickLitener(holder);
} else if (isFootView && (getItemViewType(position) == FOOT_TYPE)) {
if (holder instanceof Adapter_three.FootViewHolder) {
((Adapter_three.FootViewHolder) holder).view_foot.setText(footViewText);
// 刷新太快 所以使用Hanlder延迟两秒
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
max_count += 5;
notifyDataSetChanged();
}
}, 2000);
} else {
((Adapter_three.FootViewHolder) holder).view_foot.setText(mDatas.get(position).name + position);
}
}
}
public void ClickLitener(final RecyclerView.ViewHolder holder) {
//如果设置了回调,则设置点击事件
if (mOnItemClickLitener != null) {
//点击事件
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemClick(holder.itemView, pos);
}
});
//长按事件
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
return false;
}
});
}
}
//判断布局(这边是根据被2整除的,实际中 根据获取的值判断)
@Override
public int getItemViewType(int position) {
if (position == 0) {
return ITEM;
} else if (position == max_count - 1) {
return FOOT_TYPE;
} else {
if (position % 2 == 0) {
return TWO_ITEM;
} else {
return ONE_ITEM;
}
}
}
//数据源
@Override
public int getItemCount() {
if (mDatas.size() < max_count) {
return mDatas.size();
}
return max_count;
}
//加载第一个布局
class OneViewHolder extends RecyclerView.ViewHolder {
TextView tv;
public OneViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.adapter_linear_text);
}
}
//加载第二个布局
class TwoViewHolder extends RecyclerView.ViewHolder {
TextView tv1, tv2;
public TwoViewHolder(View itemView) {
super(itemView);
tv1 = (TextView) itemView.findViewById(R.id.adapter_two_1);
tv2 = (TextView) itemView.findViewById(R.id.adapter_two_2);
}
}
//头部 ViewHolder
class HeaderViewHolder extends RecyclerView.ViewHolder {
TextView ddd;
public HeaderViewHolder(View itemView) {
super(itemView);
ddd = (TextView) itemView.findViewById(R.id.ddd);
}
}
//尾布局
class FootViewHolder extends RecyclerView.ViewHolder {
TextView view_foot;
public FootViewHolder(View itemView, int viewType) {
super(ite
没有合适的资源?快使用搜索试试~ 我知道了~
RecyclerView加载不同的布局(新增加载头布局和尾部局)
共89个文件
xml:52个
png:10个
bin:5个
需积分: 10 10 下载量 125 浏览量
2017-06-06
10:31:39
上传
评论
收藏 812KB ZIP 举报
温馨提示
RecyclerView加载不同的布局(新增加载头布局和尾部局),自己所写,也参照很多人的总结。
资源推荐
资源详情
资源评论
收起资源包目录
RecyclerViewDemo.zip (89个子文件)
RecyclerViewDemo
.gitignore 127B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 236B
local.properties 494B
build.gradle 521B
gradlew.bat 2KB
gradlew 5KB
RecyclerViewDemo.iml 870B
app
.gitignore 8B
build.gradle 1KB
proguard-rules.pro 940B
app.iml 11KB
libs
src
test
java
com
zzyuyou
recyclerviewdemo
ExampleUnitTest.java 422B
main
AndroidManifest.xml 742B
java
com
zzyuyou
recyclerviewdemo
Adapter
Bean.java 2KB
Adapter_three.java 9KB
MainActivity.java 3KB
res
values
styles.xml 394B
colors.xml 214B
strings.xml 82B
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 8KB
layout
activity_main.xml 2KB
item_linear.xml 826B
item.xml 779B
item_foot.xml 403B
item_two.xml 293B
mipmap-xhdpi
ic_launcher_round.png 6KB
ic_launcher.png 5KB
mipmap-hdpi
ic_launcher_round.png 4KB
ic_launcher.png 3KB
drawable
mipmap-mdpi
ic_launcher_round.png 2KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 14KB
ic_launcher.png 10KB
androidTest
java
com
zzyuyou
recyclerviewdemo
ExampleInstrumentedTest.java 786B
.gradle
3.3
tasks
_app_compileDebugJavaWithJavac
localJarClasspathSnapshot
localJarClasspathSnapshot.bin 25KB
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis
localClassSetAnalysis.lock 17B
localClassSetAnalysis.bin 88KB
taskArtifacts
fileSnapshots.bin 3.06MB
taskArtifacts.lock 17B
fileHashes.bin 296KB
taskArtifacts.bin 90KB
gradle.properties 747B
.idea
libraries
jsr305_2_0_1.xml 330B
javax_annotation_api_1_2.xml 358B
support_media_compat_25_0_1.xml 734B
rules_0_5.xml 539B
runner_0_5.xml 542B
javax_inject_1.xml 324B
constraint_layout_solver_1_0_2.xml 336B
glide_3_6_1.xml 522B
okgo_2_0_0.xml 575B
okrx_0_1_0.xml 575B
espresso_core_2_2_2.xml 578B
support_compat_25_0_1.xml 716B
rxjava_1_2_0.xml 499B
constraint_layout_1_0_2.xml 410B
javawriter_2_1_1.xml 330B
support_core_ui_25_0_1.xml 719B
hamcrest_integration_1_3.xml 354B
support_core_utils_25_0_1.xml 728B
hamcrest_library_1_3.xml 342B
support_v4_25_0_1.xml 404B
rxandroid_1_2_1.xml 591B
okhttp_3_5_0.xml 517B
support_vector_drawable_25_0_1.xml 597B
okio_1_11_0.xml 506B
recyclerview_v7_25_0_1.xml 573B
espresso_idling_resource_2_2_2.xml 611B
support_fragment_25_0_1.xml 722B
okhttputils_2_6_2.xml 592B
exposed_instrumentation_api_publish_0_5.xml 629B
appcompat_v7_25_0_1.xml 564B
hamcrest_core_1_3.xml 526B
support_annotations_25_0_1.xml 493B
okserver_1_1_0.xml 587B
junit_4_12.xml 477B
animated_vector_drawable_25_0_1.xml 600B
runConfigurations.xml 564B
workspace.xml 176KB
encodings.xml 159B
misc.xml 3KB
modules.xml 369B
copyright
profiles_settings.xml 76B
compiler.xml 686B
gradle.xml 626B
settings.gradle 16B
共 89 条
- 1
资源评论
程序媛_2016
- 粉丝: 0
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功