Mui下拉刷新上拉加载,后台java

//下拉刷新(单webview模式)

//html
<div class="mui-content" id="refreshContainer">
    <ul class="mui-table-view" id="muiTableView">

    </ul>
</div>
//js

mui.init({
  pullRefresh : {
    container:"#refreshContainer",//下拉刷新容器标识
    down : {
      style:'circle',//必选,下拉刷新样式,目前支持原生5+ ‘circle’ 样式
      color:'#2BD009', //可选,默认“#2BD009” 下拉刷新控件颜色
      height:'50px',//可选,默认50px.下拉刷新控件的高度,
      range:'100px', //可选 默认100px,控件可下拉拖拽的范围
      offset:'45px', //可选 默认0px,下拉刷新控件的起始位置
      auto: true,//可选,默认false.首次加载自动上拉刷新一次
      callback :function(){
	    //获取会员id
	    var token = localStorage.getItem("token");	
	    mui.ajax(baseUrlx + '/androidQuestionBankController/viewPracticeRecord',{
	    	data:{
	    		token:token
	    	},
	    	dataType:'json',//服务器返回json格式数据
	    	type:'post',//HTTP请求类型
	    	timeout:10000,//超时时间设置为10秒;
	    	success:function(data){
	    		var table = document.getElementById("muiTableView");
	    		var html = '';
	    		//k索引 ,v 对象
	    		mui.each(data.list, function(k, v){
	    			html += '<li class="mui-table-view-cell" data-id="'+v.id+'">';
	    			html += '<div class="mui-slider-right mui-disabled"><a class="mui-btn mui-btn-red">删除</a></div>';
	    			html += '<a class="mui-navigate-right mui-slider-handle">';
	    			html += '<div>'+v.examName+'</div><span>'+v.createTime+',共'+v.allNumber+'题,做对'+v.correctNumber+'道,正确率'+v.correctRate+'%</span>';
	    			html += '</a>';
	    			html += '</li>';
	    		})
	    		table.innerHTML = html;
	    		
				setTimeout(function(){
				//没有更多内容了,endPulldown 传入true, 不再执行下拉刷新
     			mui('#refreshContainer').pullRefresh().endPulldown();	
     			//重置上拉刷新
     			//mui('#refreshContainer').pullRefresh().refresh(true);
	     			if(data.list.length < 10){
	    				//禁用上拉刷新
	    				mui('#refreshContainer').pullRefresh().disablePullupToRefresh();	     				
     				}else{
		       			//启用上拉刷新
		     			mui('#refreshContainer').pullRefresh().enablePullupToRefresh();   					
     				}
				},500)
				
	    	},
	    	error:function(xhr,type,errorThrown){
	    		console.info(type)
	    	}
	    });      	
      	
      	
      }
    },
    up : {
      height:50,//可选.默认50.触发上拉加载拖动距离
      auto:false,//可选,默认false.自动上拉加载一次
      contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容
      contentnomore:'没有更多数据了',//可选,请求完毕若没有更多数据时显示的提醒内容;
      callback :function(){
      	var ids = "";
         $('.mui-table-view-cell').each(function(key,value){
			//获取练习记录id
			var id = $(this).attr("data-id");
			if(ids == ""){
				ids = id;
			}else{
				ids = ids + "," + id;
			}
        });
        console.info(ids)
	    //获取会员id
	    var token = localStorage.getItem("token");	
	    mui.ajax(baseUrlx + '/androidQuestionBankController/viewPracticeRecordUpToRefresh',{
	    	data:{
	    		token:token,
	    		ids:ids,
	    	},
	    	dataType:'json',//服务器返回json格式数据
	    	type:'post',//HTTP请求类型
	    	timeout:10000,//超时时间设置为10秒;
	    	success:function(data){
	    		console.info(data.list.length == 0)
	    		var table = document.getElementById("muiTableView");
	    		var html = '';
	    		//k索引 ,v 对象
	    		mui.each(data.list, function(k, v){
	    			html += '<li class="mui-table-view-cell" data-id="'+v.id+'">';
	    			html += '<div class="mui-slider-right mui-disabled"><a class="mui-btn mui-btn-red">删除</a></div>';
	    			html += '<a class="mui-navigate-right mui-slider-handle">';
	    			html += '<div>'+v.examName+'</div><span>'+v.createTime+',共'+v.allNumber+'题,做对'+v.correctNumber+'道,正确率'+v.correctRate+'%</span>';
	    			html += '</a>';
	    			html += '</li>';
	    		})
	    		table.innerHTML += html;
	    		
	    		if(data.list.length < 10){
	    			//true表示没有更多数据了
	    			mui('#refreshContainer').pullRefresh().endPullupToRefresh(true);
	    			setTimeout(function(){
	    				//禁用上拉刷新
	    				mui('#refreshContainer').pullRefresh().disablePullupToRefresh();
	    			},1000)
	    		}else{
					//1、加载完新数据后,必须执行如下代码,true表示没有更多数据了:	
	     			mui('#refreshContainer').pullRefresh().endPullupToRefresh(false);	    			
	    		}

				
	    	},
	    	error:function(xhr,type,errorThrown){
	    		console.info(type)
	    	}
	    });      	
      	
      	
      }
    }    
  }
});	

//java
//controller层

	@Autowired
	private AndroidQuestionBankService androidQuestionBankService;

	/**
	 * 练习记录
	 * */
	@RequestMapping("/viewPracticeRecord")
	@ResponseBody
	public Map<String,Object> viewPracticeRecord(String token){
		return androidQuestionBankService.viewPracticeRecord(token);
	}	
	/**
	 * 练习记录
	 * 上拉加载更多
	 * */
	@RequestMapping("/viewPracticeRecordUpToRefresh")
	@ResponseBody
	public Map<String,Object> viewPracticeRecordUpToRefresh(String token,String ids){
		return androidQuestionBankService.viewPracticeRecordUpToRefresh(token,ids);
	}

//service 接口
Map<String, Object> viewPracticeRecord(String token);
Map<String, Object> viewPracticeRecordUpToRefresh(String token, String ids);
//serviceImpl  接口的实现类
	
	/**
	 * 练习记录
	 * */
	@Override
	public Map<String, Object> viewPracticeRecord(String token) {
		Map<String,Object> map = new HashMap<>();
		SxMember member = sxMemberMapper.selectByPrimaryKey(Integer.parseInt(token));
		SxMyQuestionExample myQuestionExample = new SxMyQuestionExample();
		myQuestionExample.setPageSize(10);
		myQuestionExample.setOrderByClause("create_time desc");
		com.elven.member.pojo.SxMyQuestionExample.Criteria myQuestion_c = myQuestionExample.createCriteria();
		myQuestion_c.andMemberIdEqualTo(member.getId());
		List<SxMyQuestion> myQuestionExamList = sxMyQuestionMapper.selectByExample(myQuestionExample);
		List<AndroidPracticRecordModel> list = new ArrayList<>();
		for (SxMyQuestion sxMyQuestion : myQuestionExamList) {
			AndroidPracticRecordModel androidPracticRecordModel = new AndroidPracticRecordModel();
			androidPracticRecordModel.setId(sxMyQuestion.getId());//练习记录id
			SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
			androidPracticRecordModel.setCreateTime(format.format(sxMyQuestion.getCreateTime()));
			androidPracticRecordModel.setExamName(sxMyQuestion.getCategoryExamQuestionName());
			String[] split1 = sxMyQuestion.getQuestionId().split(",");
			String[] split2 = sxMyQuestion.getRightOrWrong().split(",");
			int x = 0;
			for (String str : split2) {
				if((int)Integer.valueOf(str) == 1) {
					x++;
				}
			}
			//计算这组习题的正确率
			BigDecimal accuracy = new BigDecimal(x).divide(new BigDecimal(split1.length),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));			
			androidPracticRecordModel.setAllNumber(split1.length);
			androidPracticRecordModel.setCorrectNumber(x);
			androidPracticRecordModel.setCorrectRate(accuracy);
			list.add(androidPracticRecordModel);
		}
		
		map.put("list", list);
		return map;
	}
	/**
	 * 练习记录
	 * 上拉加载更多
	 * */	
	@Override
	public Map<String, Object> viewPracticeRecordUpToRefresh(String token, String ids) {
//获取页面原有数据的id
		List<Integer> listIds = new ArrayList<>();
		if(ids != null && !ids.equals("")) {
			String[] split = ids.split(",");
			for (String str : split) {
				listIds.add(Integer.valueOf(str));
			}
		}
		Map<String,Object> map = new HashMap<>();
		SxMember member = sxMemberMapper.selectByPrimaryKey(Integer.parseInt(token));
		SxMyQuestionExample myQuestionExample = new SxMyQuestionExample();
		myQuestionExample.setPageSize(10);
		myQuestionExample.setOrderByClause("create_time desc");
		com.elven.member.pojo.SxMyQuestionExample.Criteria myQuestion_c = myQuestionExample.createCriteria();
		myQuestion_c.andMemberIdEqualTo(member.getId());
//andIdNotIn();方法不查id为这些的数据
		myQuestion_c.andIdNotIn(listIds);
		List<SxMyQuestion> myQuestionExamList = sxMyQuestionMapper.selectByExample(myQuestionExample);
		List<AndroidPracticRecordModel> list = new ArrayList<>();
		for (SxMyQuestion sxMyQuestion : myQuestionExamList) {
			AndroidPracticRecordModel androidPracticRecordModel = new AndroidPracticRecordModel();
			androidPracticRecordModel.setId(sxMyQuestion.getId());//练习记录id
			SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
			androidPracticRecordModel.setCreateTime(format.format(sxMyQuestion.getCreateTime()));
			androidPracticRecordModel.setExamName(sxMyQuestion.getCategoryExamQuestionName());
			String[] split1 = sxMyQuestion.getQuestionId().split(",");
			String[] split2 = sxMyQuestion.getRightOrWrong().split(",");
			int x = 0;
			for (String str : split2) {
				if((int)Integer.valueOf(str) == 1) {
					x++;
				}
			}
			//计算这组习题的正确率
			BigDecimal accuracy = new BigDecimal(x).divide(new BigDecimal(split1.length),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));			
			androidPracticRecordModel.setAllNumber(split1.length);
			androidPracticRecordModel.setCorrectNumber(x);
			androidPracticRecordModel.setCorrectRate(accuracy);
			list.add(androidPracticRecordModel);
		}
		
		map.put("list", list);
		return map;
	}



 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一款基于mui框架制作的选项卡切下拉刷新加载数据列表代码,手机移动端选项卡切插件,触屏滑动下拉刷新代码。 js代码 [removed][removed] [removed][removed] [removed][removed] [removed] mui.init(); (function($) { //阻尼系数 var deceleration = mui.os.ios?0.003:0.0009; $('.mui-scroll-wrapper').scroll({ bounce: false, indicators: true, //是否显示滚动条 deceleration:deceleration }); $.ready(function() { //循环初始化所有下拉刷新上拉加载。 $.each(document.querySelectorAll('.mui-slider-group .mui-scroll'), function(index, pullRefreshEl) { $(pullRefreshEl).pullToRefresh({ down: { callback: function() { var self = this; setTimeout(function() { var ul = self.element.querySelector('.mui-table-view'); ul.insertBefore(createFragment(ul, index, 10, true), ul.firstChild); self.endPullDownToRefresh(); }, 1000); } }, up: { callback: function() { var self = this; setTimeout(function() { var ul = self.element.querySelector('.mui-table-view'); ul.appendChild(createFragment(ul, index, 5)); self.endPullUpToRefresh(); }, 1000); } } }); }); var createFragment = function(ul, index, count, reverse) { var length = ul.querySelectorAll('li').length; var fragment = document.createDocumentFragment(); var li; for (var i = 0; i < count; i ) { li = document.createElement('li'); li.className = 'mui-table-view-cell'; li[removed] = '第' (index 1) '个选项卡子项-' (length (reverse ? (count - i) : (i 1))); fragment.appendChild(li); } return fragment; }; }); })(mui); [removed]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值