热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

AndroidXRecyclerView实现多条目加载

这篇文章主要为大家详细介绍了AndroidXRecyclerView实现多条目加载效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现多条目加载展示的具体代码,供大家参考,具体内容如下

展示效果

这里写图片描述

依赖

testCompile 'junit:junit:4.12'
 compile 'com.hjm:BottomTabBar:1.1.1'
 compile 'com.android.support:design:23.4.0'
 compile 'com.android.support:mediarouter-v7:25.0.0'
 compile 'com.android.support:appcompat-v7:25.0.0'
 compile 'com.android.support:recyclerview-v7:25.0.0'
 compile 'com.jcodecraeer:xrecyclerview:1.3.2'
 compile 'com.squareup.okio:okio:1.5.0'
 compile 'com.squareup.okhttp3:okhttp:3.2.0'
 compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
 compile files('libs/gson-2.3.1.jar')
 compile files('libs/universal-image-loader-1.9.3.jar')
 compile 'com.youth.banner:banner:1.4.9'
 compile 'com.github.bumptech.glide:glide:3.7.0'

添加配置


 
 
 
 
 
 
 
 
 
 

代码区

ZhuyeActivity(首页布局含TabLayout)

public class ZhuyeActivity extends AppCompatActivity {
 private ViewPager viewpager;
 private TabLayout tablayout;
 private FragmentAdapter adapter;
 private List fragments;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_zhuye);
  viewpager=(ViewPager)findViewById(R.id.viewpager);
  tablayout=(TabLayout)findViewById(R.id.tablayout);
  fragments=new ArrayList();
  OneFragment OneFragment= new OneFragment();
  TwoFragment twoFragment = new TwoFragment();
  ThreeFragment threeFragment = new ThreeFragment();
  FourFragment fourFragment = new FourFragment();
  fragments.add(oneFragment);
  fragments.add(twoFragment);
  fragments.add(threeFragment);
  fragments.add(fourFragment);
  adapter = new FragmentAdapter(getSupportFragmentManager(),fragments);
  viewpager.setAdapter(adapter);
  tablayout.setupWithViewPager(viewpager);
 }
}

activity_zhuye(首页布局xml文件)

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
  
 
 
 

 


OneFragment(首页以第一个fragment 里面的API是自行供应的接口)

public class OneFragment extends Fragment {
 private XRecyclerView xr;
 private List list = new ArrayList<>();
 //获取数据的开始
 private int curr;
 private XRAdapter adapter;
 @Nullable
 @Override
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.y1, null, false);
  //初始化xr控件
  xr=(XRecyclerView)view.findViewById(R.id.xre_xrv);

  //加布局管理器
  LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
  layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  xr.setLayoutManager(layoutManager);

  getData(API.TYPE_HOME,1);
  xr.setLoadingListener(new XRecyclerView.LoadingListener() {

    /*下拉刷新*/

   @Override
   public void onRefresh() {
    curr=0;
    list.clear();
    getData(API.TYPE_HOME,curr);
    xr.refreshComplete();
   }

    /*上拉加载*/

   @Override
   public void onLoadMore() {
    /*curr++;
    getData(API.TYPE_HOME,curr);
    xr.refreshComplete();*/
//    xr.loadMoreComplete();
   }
  });
  return view;
 }
 private void getData(String url,int curr){
  OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback() {
   @Override
   public void onUi(MyGsonFr myGsonFr) {
    XRAdapter mxradapter=new XRAdapter(getActivity(),myGsonFr.getTop_stories());
    xr.setAdapter(mxradapter);
   }

   @Override
   public void onFailed(Call call, IOException e) {

   }
  });
 }
}

y1(OneFragment的布局代码xml)

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

XRAdapter(适配器对条目)

public class XRAdapter extends RecyclerView.Adapter {
 List lists;
 Context mcontext;
 ArrayList mlist;
 private enum Item_Type{
  Typeone,Typetwo,Typethree,Typefour,Typefive,Typesix,Typeseven;
 }
 //创建适配器有参构造


 public XRAdapter(Context mcontext, List data) {
  this.lists = data;
  this.mcOntext= mcontext;
 }

 @Override
 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  if(viewType==Item_Type.Typeone.ordinal()){
   View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_a, null);
   ViewHolderA viewHolder = new ViewHolderA(mView);
   return viewHolder;
  }else if(viewType==Item_Type.Typetwo.ordinal()){
   View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_b, null);
   ViewHolderB viewHolder = new ViewHolderB(mView);
   return viewHolder;
  }
  return null;
 }

 @Override
 public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  if (holder instanceof ViewHolderA){
   mlist=new ArrayList();
   for (int i=0;i

recycle_item_a(banner轮播xml)

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 
 

recycle_item_a(Recyclerview布局xml)

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 

ViewHolderBa(Recyclerview小适配器)

public class ViewHolderBa extends RecyclerView.Adapter{

 List lists;
 Context mc;

 public ViewHolderBa(List lists, Context mc) {
 this.lists = lists;
 this.mc = mc;
 }

 @Override
 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 MyViewHolder holder = new MyViewHolder(LayoutInflater.from(mc).inflate(R.layout.item_home, parent, false));
 return holder;
 }

 @Override
 public void onBindViewHolder(MyViewHolder holder, int position) {
 holder.tv.setText(lists.get(position).getTitle());
 ImageLoader instance = ImageLoader.getInstance();
 instance.displayImage(lists.get(position).getImage(),holder.img);
 }

 @Override
 public int getItemCount() {
 return lists.size();
 }

 class MyViewHolder extends RecyclerView.ViewHolder {

 TextView tv;
 ImageView img;

 public MyViewHolder(View view) {
  super(view);
  tv = (TextView) view.findViewById(R.id.text_a1);
  img = (ImageView) view.findViewById(R.id.img_a1);
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 本文深入探讨了 com.example.android.sunshine.data.TestUtilities 中 validateThenCloseCursor() 方法的使用方法及其代码示例,旨在帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本报告涵盖了个人博客账号和码云账号的注册过程,以及对网络工程专业学习的反思与展望。通过回顾初入大学时的专业选择,分析当前的专业知识和技能水平,并对未来的职业规划进行了详细讨论。 ... [详细]
  • VSCode与Gitee集成:项目提交的高效实践
    本文介绍如何利用VSCode内置的Git工具将项目提交到Gitee,简化Git命令的使用,提升代码管理效率。同时分享一些常见的踩坑经验和解决方案。 ... [详细]
  • 本文详细介绍了如何在ECharts中使用线性渐变色,通过echarts.graphic.LinearGradient方法实现。文章不仅提供了完整的代码示例,还解释了各个参数的具体含义及其应用场景。 ... [详细]
author-avatar
mobiledu2502859097
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有