package com.uninew.adapter;
import java.util.LinkedList;
import android.content.Context;
import android.graphics.Color;
import android.support.v4.view.PagerAdapter;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.uninew.base.RVBaseAdapter;
import com.uninew.base.RVBaseAdapter.OnItemClickListener;
import com.uninew.contant.Constants;
import com.uninew.usersbook.R;
import com.uninew.util.LogTool;
public class RecyclerPagerAdapter extends PagerAdapter {
private LinkedList<View> pages;
private LayoutInflater layoutInflater;
private RVBaseAdapter rvBaseAdapter;
private OnItemClickListener onItemClickListener;
public RecyclerPagerAdapter(Context context) {
super();
pages = new LinkedList<View>();
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (Constants.contentslists != null ) {
return Constants.contentslists.size();
}
//页面可以无限大,都是重用view的
return 0;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;//return false,影响显示
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
LogTool.i("-->destroyItem: ");
if (object != null) {
container.removeView((View) object);//注意移除,否则already attach to a parent
pages.addLast((View) object);
}
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
View page = null;
if (pages.size() > 0) {
LogTool.i("-->instantiateItem: recycler: " + position);
page = pages.getFirst();
pages.clear();//注意清除,否则会重复获取相同的view,会报错
rvBaseAdapter = (ContentAdapter) page.getTag();//小技巧获得 //Recyclerview的adapter可刷新view
rvBaseAdapter.clear();
rvBaseAdapter.addAll(Constants.contentslists.get(position - 1));
rvBaseAdapter.notifyDataSetChanged();
} else {
LogTool.i("-->instantiateItem: layoutInflater: " + position);
page = layoutInflater.inflate(R.layout.layout_recyclerview,
container, false);
RecyclerView recyclerView = (RecyclerView) page
.findViewById(R.id.rv);
page.setTag(recyclerView);
LinearLayoutManager llLayoutManager = new LinearLayoutManager(
container.getContext(), LinearLayoutManager.VERTICAL,
false);
ContentAdapter contentAdapter = new ContentAdapter();
contentAdapter
.addAll(Constants.contentslists.get(position - 1));
rvBaseAdapter = contentAdapter;
page.setTag(rvBaseAdapter);//小技巧获得Recyclerview的adapter可刷新view
recyclerView.setAdapter(rvBaseAdapter);
recyclerView.setLayoutManager(llLayoutManager);
}
container.addView(page);
return page;
}
}
相关推荐
Android TabLayout+ViewPager黄金组合实战指南
TabLayout和ViewPager是Android原生分页导航的核心组件,基于PagerAdapter实现Fragment页面容器与顶部标签栏的双向协同。其原理在于TabLayout负责UI渲染与用户交互,ViewPager承担页面调度与生命周期管理,二者通过setupWithViewPager建立松耦合绑定。该方案具备零第三方依赖、全版本兼容、调试友好等技术价值,广泛应用于电商详情页、教育App模块切换、政务平台多栏目等场景。相比ViewPager2需自行实现Tab逻辑,或BottomNavigati
ViewPager复用
代码很简单,记录一下 import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; ...
Android ListView和ViewPager实战应用指南
自定义适配器提供了更大的灵活性,允许开发者定义每个列表项的布局以及如何绑定数据。以下是使用自定义适配器的基本步骤:// 构造函数@Override// 获取或创建视图// 绑定数据在这段示例代码中,CustomAdapter类继承自ArrayAdapter,定义了一个泛型参数MyData,表示绑定的数据模型。在getView()方法中,首先尝试复用传入的convertView视图,如果为空,则通过LayoutInflater来加载自定义布局。
ViewPager的刷新以及复用
1、刷新ViewPager时缓存页面默认是不会刷新的, 只有将PagerAdapter的getItemPosition方法返回值改为POSITION_NONE时才会刷新, 但是如果都改为POSITION_NONE的话,那开销有点大 2、一个Item在destory后不能复用 为解决以上两个问题,封装了一个BasePagerAdapter,见代码: public abstrac
利用Python脚本生成IDA Pro许可证文件idapro.hexlic的完整指南
本文提供了一份详细的Python脚本指南,用于自动化生成IDA Pro的许可证文件idapro.hexlic。文章深入解析了脚本原理,包括构建许可证JSON、RSA密钥修补与签名生成机制,并附有完整的操作流程与常见问题排查,帮助逆向工程人员快速完成本地化许可部署。
3DMax高效建模与人工智能:一场颠覆传统创作的效率革命
AI与3DMax的结合,不仅是工具效率的升级,更是一场创作范式的革命。从“手动雕刻”到“智能共生”,设计师的角色正从执行者转向决策者。正如网友所言:“AI不是替代人类,而是赋予凡人以神笔。”在这场变革中,唯有拥抱技术、深耕创意,方能在数字艺术的浪潮中立于潮头。参考文献与工具推荐技术原理:火星时代资讯《人工智能和三维建模》工具实测:哔哩哔哩《tyDiffusion 3dsMax应用》9、Tripo AI官网教育案例:原创论文《人工智能技术介入三维动画课程建设》
ViewPager 适配器优化,避免重复创建布局
在项目中,我们经常用到轮播图,前几天项目中再次遇到了这个需求。需求比较简单,三张图片无限循环,每隔2秒自动滑到下一页。需求不难,很快就写出来了。分析思路: 一、既然是无限制的,那么就适配器的 getCount() 方法返回值,返回一个 int 范围允许的最大值; 二、适配器中创建对象的 instantiateItem() 方法,我们展示图片,加载 url 时,对当前页 position 对 3...
为什么你的单细胞数据总有问题?可能是忽略了scDblFinder这个神器
本文深入剖析了单细胞数据分析中异质性双细胞这一常见但易被忽视的痛点,并重点介绍了scDblFinder这一神器。scDblFinder通过机器学习模型,能精准识别并过滤同一样本内的异质性双细胞,有效解决其导致的聚类模糊、信号混淆等问题,从而显著提升数据洁净度与下游分析结果的可靠性。
【android学习】ViewPager中包含TextView,在TextView上拖动不能滑动ViewPager
问题描述: 利用ViewPager+Fragment左右滑动很灵敏,但是只要手指放在fragment布局中的TextView上面拖动时候,ViewPager就不能拖动,经过后续对比发现,问题点就在TextView中的singleLine和gravity上面。 在做跑马灯效果时候,给TextView设置了 android:singleLine="true",以及 android:gravity="center" 修改方案: android:singleLine="true"继续保...
从ORCAP-1589警告看Cadence ORCAD的DRC设置:如何避免‘网络别名’引发的潜在短路风险
本文深入解析Cadence ORCAD中ORCAP-1589警告的深层含义,探讨网络别名可能引发的短路风险及DRC设置优化方案。通过分析网络别名的设计意图、DRC规则配置及最佳实践,帮助工程师有效规避设计风险,提升电路设计的可靠性和规范性。
原理之(〇)3D Gaussian Splatting 数学原理与推导
3D Gaussian Splatting源于EWA的理论基础,本文重点从EWA模型出发,详细推导3D GS中的数学原理,加深对鱼眼相机畸变场景下的理解。
android ViewPager之PagerAdapter中View的重用
在写PagerAdapter的时候,需要重写instantiateItem(ViewGroup container ,int position) 此方法中,将需要加载的View,添加到container中。 PagerAdapter不能直接使用像ListView那样的ViewHolder,来实现View的复用。 所以,如果每次加载,都要新建一个View出来就会很...
计算机应用数学--第一次作业
中科大 计算机应用数学 第一次作业
ViewPager的Adapter中视图重用
ViewPager的PagerAdapter不像ListView/GridView的BaseAdapter,它是没有内部视图重用机制的,也就是说我先inflate出来一个,然后调用destroyItem后,这个视图就被抛弃了,假设须要很多其它的视图,则须要再次inflate。假设ViewPager中的全部视图基本同样,就存在内存的浪费了。这里使用一个很easy的方法实现视图的重用: Li...
深度学习论文: Cultivated Land Extraction from High-Resolution Remote Sensing Image
深度学习论文: Cultivated Land Extraction from High-Resolution Remote Sensing Image The Winning Solution to the iFLYTEK Challenge 2021 Cultivated Land Extraction from High-Resolution Remote Sensing Image PDF: https://arxiv.org/pdf/2202.10974.pdf PyTorch代码: https:
整理 钢琴 约翰汤普森-简易钢琴(小汤)
文件名:(小汤1)约翰-汤普森钢琴1 超清PDF (原版引进)文件名:(小汤2)约翰-汤普森钢琴2 超清PDF (原版引进)文件名:(小汤3)约翰-汤普森钢琴3 超清PDF (原版引进)文件名:(小汤4)约翰-汤普森钢琴4 超清PDF (原版引进)文件名:(小汤5)约翰-汤普森钢琴5 超清PDF (原版引进)文件大小:20.1 MB。文件大小:23.7 MB。文件大小:45.7 MB。文件大小:51.7 MB。文件大小:72.0 MB。
(仿头条APP项目)3.二级页面首页的ViewPager页面切换
文章目录二级页面首页的ViewPager页面切换效果展示代码实现创建几个三级页面Fragment视图创建fragment_home视图文件HomeFragment.java 二级页面首页的ViewPager页面切换 效果展示 代码实现 创建几个三级页面Fragment视图 import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; import android.su
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
ViewPager复用调研
一、要调研的问题: 1、ViewPager有复用机制吗??? 2、ViewPager中最多存在多少View??? 二、测试demo代码 GuideViewDemoActivity代码: package com.lenovo.guidedemo;import java.util.ArrayList;import android.app.Activity; import an
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
android viewpager 切换fragment,Android App中使用ViewPager+Fragment实现滑动切换效果
在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,但是使用ViewPager也有弊端:需要导入android-support-v4.jar、细节无法控制。不过现在情况已经不一样了,android-support-v4中提供了很多实用的功能,以至于现在新建一个android工程默认都会导入这个jar包。那我们就...
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
另一种方法:当使用ViewPager加载大量View时卡顿严重的简单解决方法
在做项目的时候,需要自定义
ViewPager的重用
实现重用,对ImageView效果不好,准确的说是大图,会oom,最好自定义ImageView对图片手动释放 ViewPager一次最多生成6个View,除去初始化的时候,有3个view是一直存在的,切换时生成第4个view,切换完成时移除第1个;跳转时会生成6个view,跳转完成时移除前3个view private class ViewPagerAdapter extends PagerAd
ViewPager和RecyclerView缓存View的问题
在安卓中ViewPager和RecyclerView是常用控件,这两个控件的关键特点是存在缓存。可以提升App效率,对于重用View来讲不必去多次加载View。对于Android系统来说,LayoutInflate加载View本质上是需要时间的,即便这个时间可能会很短。所以对于缓存机制来讲是很必要的。 但是对于缓存View来讲需要注意一些的问题。处理不很可能会造成复用上的问题。所以对于复用Vie
关于ViewPager优化
1.使用Fragment加载轻量级的页面,布局优化(因为ViewPager每个item都加载了很多个布局比较深的View,加上动画就非常卡顿,所以采用Viewpager预加载的功能(初始化的时候去设置预加载数),并且让他加载第0页的pager的同时,就去预加载其他页,并且不让Viewpager销毁页面(重写adapter的ondestoryitem方法),缺点是过于耗内层,) private vo...
Android(4)——Fragment,ViewPager
文章目录Android1 Fragment1.1 概述1.2 生命周期1.3 静态、动态加载1.3.1 静态加载:XML1.3.2 动态加载:java code1.4 传值2 ViewPage导航效果 Android 安卓开发者指南:https://developer.android.google.cn/guide 1 Fragment 1.1 概述 设计思想: 为了解决不同分辨率的终端适配问题,简化Activity。 Fragment VS Activity 1.Fragment是 到Android3.0
Android博客挑错系列之一FragmentTabHost和ViewPager实现底部导航栏
决定写这个系列,是因为大部分的国内博客都是拿来主义——照搬,一点也不考察博客内容的正解性, 希望这个系列能对国内的这种风气起到一点作用。 首先就拿一个常见的FragmentTabHost和ViewPager实现手势切换底部工具栏来开开刀吧 一个实现普遍的实现如博客使用FragmentTabHost和ViewPager实现仿微信主界面侧滑 (无意冒犯,Google搜索的排名靠前,如需
338



被折叠的 条评论
为什么被折叠?



