精华内容
参与话题
问答
  • 微信小程序下拉刷新/上拉加载更多

    万次阅读 多人点赞 2017-12-19 09:37:50
    在小程序里,用户顶部下拉是默认禁止的,我们需要把他设置为启用,在app.json中的设置对所有页面有效,在单独页面设置则对当前页面有效; 看一下json文件 "enablePullDownRefresh": true, 注意这里的true是...

    查看文档,在用page()函数注册页面的时候有这样的两个对象参数用户判断用户在最顶部下拉到达最底部,

    在小程序里,用户顶部下拉是默认禁止的,我们需要把他设置为启用,在app.json中的设置对所有页面有效,在单独页面设置则对当前页面有效;

    看一下json文件

     

    "enablePullDownRefresh": true,


    注意这里的true是布尔型而不是字符;

     

    有同学说设置完之后可以下拉,但是看不到图标;

    在app.json中这样设置;

    这样下拉之后就可以看到了;

    每个页面生成的时候已经默认为我们设置了前面提到的onPullDownRefresh函数和onReachBottom函数

    直接上代码:

    page为全局变量,用在在后面的加载请求,这里要和编写数据接口的同事讨论好请求;

     

     // 下拉刷新
      onPullDownRefresh: function () {
        // 显示顶部刷新图标
        wx.showNavigationBarLoading();
        var that = this;
        wx.request({
          url: 'https://xxx/?page=0',
          method: "GET",
          header: {
            'content-type': 'application/text'
          },
          success: function (res) {
            that.setData({
              moment: res.data.data
            });
            console.log(that.data.moment);
            // 隐藏导航栏加载框
            wx.hideNavigationBarLoading();
            // 停止下拉动作
            wx.stopPullDownRefresh();
          }
        })
      },

     

    上拉加载更多:

     

     

    /**
       * 页面上拉触底事件的处理函数
       */
      onReachBottom: function () {
        var that = this;
        // 显示加载图标
        wx.showLoading({
          title: '玩命加载中',
        })
        // 页数+1
        page = page + 1;
        wx.request({
          url: 'https://xxx/?page=' + page,
          method: "GET",
          // 请求头部
          header: {
            'content-type': 'application/text'
          },
          success: function (res) {
            // 回调函数
            var moment_list = that.data.moment;
            const oldData = that.data.moment;
            that.setData({
               moment:oldData.concat(res.data.data)
            })
            // 隐藏加载框
            wx.hideLoading();
          }
        })
    
      },

    完成。

    推荐一下自己的小程序 有兴趣可以交流

     



     

     

    展开全文
  • RecyclerView侧滑菜单,RecyclerView滑动删除,RecyclerView长按拖拽,RecyclerView下拉刷新上拉加载 版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 RecyclerView侧滑菜单,...

    版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003

    Feature

    1. 以下功能全部支持:竖向ListView、横向ListView、Grid、StaggeredGrid四种形式。
    2. RecyclerView 左右两侧 侧滑菜单。
    3. 菜单横向排布、菜单竖向排布。
    4. RecyclerView长按拖拽Item。
    5. RecyclerView侧滑删除item。
    6. 指定RecyclerView的某一个Item不能滑动删除或长按拖拽。
    7. 某一个Item显示的不同的菜单(类似QQ)。
    8. 用SwipeMenuLayout在任何地方都可以实现你自己的侧滑菜单。
    9. 使用SwipeRecyclerView下拉刷新、自动加载更多。
    10. 可以和ViewPager、DrawerLayout、CardView嵌套使用。

    SwipeRecyclerView项目地址:https://github.com/yanzhenjie/SwipeRecyclerView

    引用方法

    • Eclipse 请放弃治疗
    • Gradle
    compile 'com.yanzhenjie:recyclerview-swipe:1.0.3'

    Or Maven:

    <dependency>
      <groupId>com.yanzhenjie</groupId>
      <artifactId>recyclerview-swipe</artifactId>
      <version>1.0.3</version>
      <type>pom</type>
    </dependency>

    效果图

    gif有一些失真,且网页加载速度慢,可以[下载demo的apk][3]看效果。

    侧滑菜单

    1. 左右两侧都有菜单,主动调出第几个菜单或者手指滑动出现。
    2. 根据ViewType某一个Item显示的不同的菜单(类似QQ)

    <两侧侧滑菜单 不同的Item不同的菜单

    和ViewPager嵌套 下拉刷新、自动加载更多

    1. 和ViewPager嵌套使用,兼容了滑动冲突。
    2. 可以和任何下拉刷新的框架结合,滑动到底部自动加载更多。

    和ViewPager嵌套使用 下拉刷新加载更多

    长按拖拽 侧滑菜单结合使用

    1. 一直按住Item进行拖拽排序,支持List、Grid形式。
    2. 长按拖拽并且和侧滑菜单结合使用。

    List拖拽排序、菜单 Grid拖拽排序、菜单

    直接滑动删除 长按拖拽Item排序

    1. 侧滑直接删除,也可以长按拖拽排序。
    2. 可以指定某个Item不能被侧滑删除、不能被长按拖拽。

    侧滑删除 指定某一个不能拖拽、滑动删除

    竖型菜单 用自定义布局实现自己的菜单

    1. 给菜单设置排列方向,支持横向、竖向。
    2. 开发者用库中的SwipeMenuLayout开发自己的侧滑菜单。

    菜单排列方向 自定义菜单

    使用介绍

    这里列出关键实现,具体请参考demo,或者加最上面的交流群一起讨论。 更多教程请进入我的博客查看。

    启用SwipeReyclerView的长按Item拖拽功能和侧滑删除功能

    recyclerView.setLongPressDragEnabled(true);// 开启长按拖拽
    recyclerView.setItemViewSwipeEnabled(true);// 开启滑动删除。
    recyclerView.setOnItemMoveListener(onItemMoveListener);// 监听拖拽和侧滑删除,更新UI和数据。

    添加Item侧滑菜单

    侧滑菜单支持自动打开某个Item的菜单,并可以指定是左边还是右边的:

    // 打开第一个Item的左侧菜单。
    recyclerView.openLeftMenu(0);
    
    // 打开第一个Item的右侧菜单。
    recyclerView.openRightMenu(0);
    • 第一步,引用自定义View:SwipeMenuReyclerView:
    <com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    • 第二步,设置菜单创建器、菜单点击监听:
    SwipeMenuRecyclerView swipeMenuRecyclerView = findViewById(R.id.recycler_view);
    // 设置菜单创建器。
    swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);
    // 设置菜单Item点击监听。
    swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);
    • 第三步,菜单创建器创建菜单:
    /**
     * 菜单创建器。在Item要创建菜单的时候调用。
     */
    private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
        @Override
        public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
    
            SwipeMenuItem addItem = new SwipeMenuItem(mContext)
                .setBackgroundDrawable(R.drawable.selector_green)// 点击的背景。
                .setImage(R.mipmap.ic_action_add) // 图标。
                .setWidth(size) // 宽度。
                .setHeight(size); // 高度。
            swipeLeftMenu.addMenuItem(addItem); // 添加一个按钮到左侧菜单。
    
            SwipeMenuItem deleteItem = new SwipeMenuItem(mContext)
                .setBackgroundDrawable(R.drawable.selector_red)
                .setImage(R.mipmap.ic_action_delete) // 图标。
                .setText("删除") // 文字。
                .setTextColor(Color.WHITE) // 文字颜色。
                .setTextSize(16) // 文字大小。
                .setWidth(size)
                .setHeight(size);
            swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。.
    
            // 上面的菜单哪边不要菜单就不要添加。
        }
    };

    更多使用方法请参考Demo,或者加最上方的QQ群来交流。

    • 第四步,继承SwipeMenuAdapter,和正常的Adapter一样使用:
    public class MenuAdapter extends SwipeMenuAdapter<MenuAdapter.DefaultViewHolder> {
    
        @Override
        public int getItemCount() {
            return 0;
        }
    
        @Override
        public View onCreateContentView(ViewGroup parent, int viewType) {
            return null;
        }
    
        @Override
        public ViewHolder onCompatCreateViewHolder(View realContentView, int viewType) {
            return null;
        }
    
        @Override
        public void onBindViewHolder(MenuAdapter.DefaultViewHolder holder, int position) {
        }
    }

    就到这里,更多的细节,请参考Github上的demo和源码,源码demo下载传送门


    版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003

    展开全文
  • pullToRefreshView下拉刷新上拉加载

    千次阅读 2015-04-02 00:15:28
    详细讲解了pullTorefreshListView的用法

         又是好长时间没写博客了,今天用到了下拉刷新下拉加载,总结了下也看了下源码,把下拉刷新搞懂了,上拉加载还在看,今天就不说原理了,而是说一下应该怎么用,其实pullToRefreshView很简单只要把准备工作做好就好了

     一、上拉刷新下拉加载的实现

      1、实现上拉刷新下拉加载目前基本上是采用pulltoRefreshView开源框架来进行实现它的实现方法主要分为两种
      (1).从官网下载jar包添加到项目中 gitHub网址   https://github.com/chrisbanes/Android-PullToRefresh
      (2).把需要的类从源码中抽取出来,把抽取的自己需要的源码放到自己的项目中,我个人比较倾向于这种方法,因为这种方法可以根据项目的需要进行相应的改动,
         所以我就将(2)种方法的做法说一下

    2、实现步骤:

    目前已经有人抽好的源码,我们可以直接拿来用,如果想弄清楚里面的实现原理可以看源码,里面源码的注释非常详细
    实现步骤:
    (1)需要导入的资源
                 
    如图所示,红色圈住的是我们要加到项目的类里面包括GridView,ListView,ScrollView,WebView我们可以根据需要进行选择
    另外需要注意的是我们还需要资源文件下的如图二所示的布局和values下的picture_dimens.xml和pull_refresh_string.xml拷贝过去。做好以上工作,我就可以
    根据项目的实际需要对动画,文字等等进行相应的更改,下面以一个实例进行具体的阐述效果图如下:
          
              
    我们可以在pull_refresh_strings.xml中改变加载时候的文本,可以在pull_to_load_footer.xml中改变加载到底部的布局
    可以在putt_load_header.xml中改变如上图(1)的动画的图片等等。

    3.源码

       

    package com.example.pulltorefreshpractice;
    
    import java.text.SimpleDateFormat;
    import java.util.Arrays;
    import java.util.Date;
    import java.util.LinkedList;
    import java.util.List;
    
    import com.example.ui.PullToRefreshBase;
    import com.example.ui.PullToRefreshBase.OnRefreshListener;
    import com.example.ui.PullToRefreshListView;
    
    
    import android.app.Activity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.text.format.DateUtils;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    
    public class MainActivity extends Activity {
    	
    	private PullToRefreshListView ptrlv_test;
    	private LinkedList<String> mListItem;
    	private ArrayAdapter<String> mAdapter;
    	
    	private ListView mListView;
    	
    	private boolean isPullDownRefresh=true;//判断是下拉,还是上拉的标记
    	private int mCurrentIndex=0;//当前条目的位置
    	
    	private static final int oneLoadCount=20;//每一次加载条目的个数
    	
    	private SimpleDateFormat mDateFormat = new SimpleDateFormat("MM-dd HH:mm");//日期格式
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		mListItem=new LinkedList<String>();
    		mListItem.addAll(Arrays.asList(mStrings).subList(0,oneLoadCount));//从总体中截取一次加载的条目个数进行加载
    		
    		ptrlv_test=(PullToRefreshListView) findViewById(R.id.ptrlv_test);
    		//设置当前上拉加载不可用
    		ptrlv_test.setPullLoadEnabled(false);
    		//设置下拉刷新可用
    		ptrlv_test.setPullRefreshEnabled(true);
    		//设置上拉加载可用
    		ptrlv_test.setPullLoadEnabled(true);
    		//滑到底部是否自动加载数据,这句话一定要加要不然"已经到底啦"显示不出来
    		ptrlv_test.setScrollLoadEnabled(true);
    		//得到真正的listview,我们在给listview设置adapter时或者设置onItemClick事件必须通过它,而不能用ptrlv_test
    		mListView = ptrlv_test.getRefreshableView();
    		mCurrentIndex=oneLoadCount;
    		mAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mListItem);
    		
    		mListView.setAdapter(mAdapter);
    		//设置刷新监听器
    		ptrlv_test.setOnRefreshListener(new OnRefreshListener<ListView>() {
    
    			@Override
    			public void onPullDownToRefresh(
    				PullToRefreshBase<ListView> refreshView) {
    				isPullDownRefresh=true;
    				new getMoreDateTask().execute();
    			}
    
    			@Override
    			public void onPullUpToRefresh(
    				PullToRefreshBase<ListView> refreshView) {
    				isPullDownRefresh=false;
    				new getMoreDateTask().execute();
    			}
    			
    		});
    		setLastUpdateTime();
    	}
    	
    	private void setLastUpdateTime() {
    		 String text = formatDateTime(System.currentTimeMillis());
    	     ptrlv_test.setLastUpdatedLabel(text);
    		
    	}
    	
    	private String formatDateTime(long time) {
            if (0 == time) {
                return "";
            }
            
            return mDateFormat.format(new Date(time));
        }
    
    	//异步加载数据
    	private class getMoreDateTask extends AsyncTask<Void, Void, String []>{
    
    		@Override
    		protected String[] doInBackground(Void... params) {
    			
    			try {
    				Thread.sleep(2000);//模拟加载数据
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			return mStrings;
    		}
    		
    		@Override
    		protected  void onPostExecute(String[] result) {
    			super.onPostExecute(result);
    			boolean hasMoreData=true;
    			//判断是上拉,还是下拉
    			if(isPullDownRefresh){
    				mListItem.addFirst("刷新增加的数据");
    			}else{
    				//如果是上拉加载从当前条目position+oneLoadCount即在原有的基础上增加onLoadCount个条目
    				int start=mCurrentIndex;
    				int end=start+oneLoadCount;
    				if(end>=mStrings.length){
    					end=mStrings.length;
    					hasMoreData=false;
    				}
    					
    				for(int i=start;i<end;i++){
    				    mListItem.add(mStrings[i]);
    				}
    				mCurrentIndex=end;
    			}
    			
    			mAdapter.notifyDataSetChanged();
    			ptrlv_test.onPullDownRefreshComplete();
    			ptrlv_test.onPullUpRefreshComplete();
    			//把当前是否是有数据的状态传过去
    			ptrlv_test.setHasMoreData(hasMoreData);
    		}
    	}
    	
    	
    	public static final String[] mStrings = {
    		 "1", "2", "3", "4", "5","6", "7", "8", "9", "10", 
    	        "11","12", "13", "14", "15", "16","17", "18", "19", "20",
    	        "21","22", "23", "24", "25", "26","27", "28", "29", "30", 
    	        "31", "32","33", "34", "35", "36", "37", "38", "39","40", 
    	        "41", "42", "43", "44","45", "46", "47", "48", "49", "50",
    	        "51", "52", "53", "54", "55", "56","57", "58", "59", "60",
    	        "61", "62", "63", "64", "65","66", "67", "68", "69","70",
    	        "71", "72", "73", "74","75", "76", "77", "78", "79", "80",
    	        "81", "82", "83", "84","85", "86", "87", "88", "89", "90",
    	        "91", "92", "93", "94","95", "96", "97", "98","99", "100", 
    	        "101", "102","103", "104", "105", "106", "107", "108","109", "110", 
    	        "111", "112", "113", "114", "115","116", "117", "118", "119", "120",
    	        "121", "122", "123", "124", "125","126", "127", "128", "129","130", 
    	        "131", "132", "133", "134","135", "136", "137", "138","139", "140", 
    	        "141", "142", "143","144", "145", "146", "147", "148","149", "150", 
    	        "151", "152", "153","154", "155", "156", "157", "158", "159","160", 
    	        "161", "162", "163","164", "165", "166", "167", "168","169", "170", 
    	        "171", "172", "173","174", "175", "176", "177", "178","179", "180", 
    	        "181", "182", "183","184", "185", "186", "187","188", "189", "190", 
    	        "191", "192","193", "194", "195", "196", "197","198", "199", "200", 
    	        "201","202", "203", "204", "205", "206", "207","208", "209", "210", 
    	        "211", "212","213", "214", "215", "216", "217","218", "219", "220", 
    	        "221", "222","223", "224", "225", "226", "227", "228","229", "230", 
    	        "231", "232", "233","234", "235", "236", "237","238", "239", "240", 
    	        "241", "242","243", "244", "245", "246","247", "248", "249", "250", 
    	        "251","252", "253", "254", "255", "256", "257","258", "259", "260",
    	        "261", "262", "263", "264", "265","266", "267", "268", "269","270", 
    	        "271", "272", "273", "274", "275","276", "277", "278", "279", "280", 
    	        "281", "282","283", "284", "285", "286","287", "288", "289", "290",
    	        "291","292", "293", "294", "295", "296","297", "298", "299", "300"
    	};
    }

    大家可以把源码下载下来把上面我说的需要导入项目的类和资源文件保存起来,下次用到直接拿来用,就可以了

    下载源码请点击


    展开全文
  • RecyclerView下拉刷新上拉加载

    热门讨论 2016-03-07 23:12:21
    RecyclerView下拉刷新上拉加载
  • 通用版下拉刷新上拉加载大合集demo 源码

    千次下载 热门讨论 2014-08-27 14:41:33
    对所有View通用的下拉刷新上拉加载控件demo大合集。 与此资源对应的博客地址: http://blog.csdn.net/zhongkejingwang/article/details/38868463
  • 上拉加载下拉刷新

    2019-01-11 12:04:43
    这是一个上拉加载下拉刷新的 js 插件,可用于微信公众号小程序以及App,亲测可用。
  • 使用简单的js就能实现上拉加载下拉刷新功能。
  • 此文档描述的是在移动端实现上拉加载下拉刷新功能。
  • React-Native 上拉加载下拉刷新

    千次阅读 2018-06-15 09:59:51
    react-native 上下拉加载的控件效果都不好,找了半天没找到,正打算自已封装的时候,无意中找到了一个比较好的控件,大家看一下: react-native-refresh-list-view 这个是基于flatlist封装的,效果还不错,大家...

    #1.前言
    react-native 上下拉加载的控件效果都不好,找了半天没找到,正打算自已封装的时候,无意中找到了一个比较好的控件,大家看一下:
    react-native-refresh-list-view

    这个是基于flatlist封装的,效果还不错,大家可以用一下。

    #2.结尾
    加油吧!

    展开全文
  • 问代码实现了Gridview上拉加载下拉刷新。本代码主要依托第三的框架,上拉加载下拉刷新,依托于pulltofresh,对于图片的展示和缓存,则依托于universualImageload.例子已经写好了,代码测试能运行。
  • ListView的下拉刷新上拉加载

    千次下载 热门讨论 2014-10-10 17:09:33
    这个Demo实现了ListView的下拉刷新上拉加载这两个功能,功能基本完善,可以在项目中引用,关于这个自定义的组件,详细请参见:http://blog.csdn.net/allen315410/article/details/39965327
  • Android 通用版下拉刷新上拉加载更多, 可下拉刷新上拉加载的ListView"); items.add("可下拉刷新上拉加载的GridView"); items.add("可下拉刷新上拉加载的ExpandableListView"); items.add("可下拉刷新上拉加载的...
  • react native实现上拉加载下拉刷新

    千次阅读 2017-01-16 21:30:07
    前言我们在做原生app开发的时候,很多场景都会用到下拉刷新上拉加载的操作,Android中如PullToRefreshListView,ios中如MJRefresh等都是比较好用,且实现上比较简单的第三方库。他们的实现原理大体相同,都是在...
  • 下拉刷新 在Flutter中系统已经为我们提供了google material design的刷新功能 , 样式与原生Android一样. 我们可以使用RefreshIndicator组件来实现Flutter中的下拉刷新,下面们还是先来看下如何使用吧 ...
  • 自从谷歌推出SwipeRefreshLayout之后越来越多的博客都是使用SwipeRefreshLayout来完成下拉刷新,但是往往产品经理根本不会使用谷歌的样式.每个公司都有一套自己的下拉样式这个时候就需要我们完全自定义RecyclerView的...
  • 上拉加载 下拉刷新

    2013-08-13 15:22:23
    最近看了BeeFramework的demo,感觉里边的下拉类表做的很漂亮,但是想把bee的控件单独摘出来很困难,也挺麻烦的,于是就结合以前项目的控件,做了一下封装,实现类似的效果 代码:...
  • 这篇文章主要对WZMRecyclerView的上拉刷新下拉加载部分,从思路、实现方式、问题解决三个方面进行了介绍。
  • RecyclerView 下拉刷新上拉加载

    万次阅读 2016-05-12 14:59:13
    RecyclerView 下拉刷新上拉加载RecyclerView已经出来很久了,许许多多的项目都开始从ListView转战RecyclerView,那么,上拉加载下拉刷新是一件很有必要的事情。在ListView上,我们可以通过自己添加addHeadView和...
  • vant 上拉加载下拉刷新

    万次阅读 2018-09-20 09:20:46
    1.使用vant中的list和PullRefresh组件 import { PullRefresh,List } from 'vant'; Vue.use(PullRefresh).use(List); 2.代码demo &lt;van-pull-refresh v-model="isLoading"... ...
  • 一丶效果图 二丶概述 RecyclerVIew的上拉加载下拉刷新网上也有很多,包括github上的开源也有非常好用的,这里整理demo作为一个开始
  • android下拉刷新上拉加载更多android下拉刷新上拉加载更多android下拉刷新上拉加载更多android下拉刷新上拉加载更多
  • 利用微信小程序的onPullDownRefresh函数(下拉刷新监听函数)和onReachBottom函数(上拉加载监听函数)监听页面的下拉和上拉动态,从而对页面数据进行修改! 页面配置JSON enablePullDownRefresh:...
  • 详细的讲解在http://blog.csdn.net/yyh448522331/article/details/49080297
  • ionic下拉刷新上拉加载怎么做,有实例就更好了。求大神们帮忙。
  • ListView
  • ![![图片说明]... 现在支持一个页面多个调用,这句话是什么意思啊,假如我一个页面里有一个大的div,里面有四个小的div,怎么实现让这四个小的div都可以下拉刷新上拉加载呢 ×
  • 下拉刷新 上拉加载

    2018-03-15 08:08:54
    //依赖compile 'com.androidkun:pulltorefreshrecyclerview:1.0.9'package com.example.administrator.xiala;import android.content.Context;import android.support.v7.app.AppCompatActivity;...
  • ListView上拉加载下拉刷新

    千次阅读 2014-06-11 16:07:55
    ListView的上拉加载更多,下拉刷新数据。下拉刷新显示最近更新数据时间。

空空如也

1 2 3 4 5 ... 20
收藏数 10,134
精华内容 4,053
关键字:

上拉加载