一切为了快速迭代

import java.util.ArrayList;

import org.json.JSONObject;

import android.animation.ObjectAnimator;

import android.os.Bundle;

import android.support.v4.widget.SwipeRefreshLayout;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ImageView;

import android.widget.LinearLayout;

import com.android.volley.Response.Listener;

import com.widget.view.LoadMoreListView.OnLoadMoreListener;

import com.yirui.youbao.CommonAdapter;

import com.yirui.youbao.ViewHolder;

import com.yirui.youbao.ViewWrapper;

import com.yirui.youbao.app.R;

import com.yirui.youbao.model.Pagination;

import com.yirui.youbao.model.Parking;

import com.yirui.youbao.net.Commands;

import com.yirui.youbao.net.VolleyHelper;

import com.yirui.youbao.util.Json;

/**

*

*

* @author pythoner

*

*/

public class ParkingPayedListFragment extends BaseFragment {

private com.widget.view.LoadMoreListView listView;

private CommonAdapter adapter;

private Pagination pagination = new Pagination();

private ArrayList parkings = new ArrayList();

private SwipeRefreshLayout swipeRefreshLayout;

public static ParkingPayedListFragment newInstance(/*KeyValue kv*/) {

ParkingPayedListFragment fragment = new ParkingPayedListFragment();

Bundle bundle = new Bundle();

// bundle.putParcelable("KeyValue", kv);

fragment.setArguments(bundle);

return fragment;

}

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Bundle args = getArguments();

if (args != null) {

// curKeyValue = args.getParcelable("KeyValue");

}

}

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

super.onCreateView(inflater, container, savedInstanceState);

View view = inflater.inflate(R.layout.fragment_list_comm, container,false);

listView = (com.widget.view.LoadMoreListView) view.findViewById(R.id.listView);

listView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

// TODO Auto-generated method stub

//

}

});

listView.setOnLoadMoreListener(new OnLoadMoreListener() {

@Override

public void onLoadMore() {

pagination.page++;

doDefaultParkingQuery();

}

});

swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout);

swipeRefreshLayout.setColorScheme(R.color.scheme_green,R.color.scheme_yellow, R.color.scheme_gray, R.color.scheme_red);

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

@Override

public void onRefresh() {

// TODO Auto-generated method stub

refreshListView();

//

doDefaultParkingQuery();

}

});

doDefaultParkingQuery();

return view;

}

private void doDefaultParkingQuery() {

doCommandParkingQuery("潍坊路", pagination);

}

private void doCommandParkingQuery(String keyword, Pagination pagination) {

Commands.doCommandParkingQuery(context, keyword, pagination,

new Listener() {

@Override

public void onResponse(JSONObject response) {

// TODO Auto-generated method stub

// Log.i("tag", response.toString());

if (context.isSuccess(response)) {

updateViews(Json.parseParkings(response));

}

}

});

}

private void refreshListView() {

listView.resetLoadMoreListener();

pagination.page = 1;

parkings.clear();

// notifyDataSetChanged();

}

private void closeRefreshing() {

if (swipeRefreshLayout != null && swipeRefreshLayout.isRefreshing()) {

swipeRefreshLayout.setRefreshing(false);

}

}

private void updateViews(Object obj) {

closeRefreshing();

if (obj == null) {

return;

}

ArrayList list = (ArrayList) obj;

// Log.i("tag", "list.size==="+list.size());

listView.onLoadMoreComplete();

if (list.size() == 0) {

listView.removeLoadMoreListener();

return;

}

parkings.addAll(list);

notifyDataSetChanged();

}

private void notifyDataSetChanged() {

if (adapter == null) {

listView.setAdapter(adapter = new CommonAdapter(context,

parkings, R.layout.item_for_parkings) {

@Override

public void setValues(ViewHolder helper, Parking item,

int position) {

createItem(helper, item, position);

}

});

} else {

adapter.notifyDataSetChanged();

}

}

//打开关闭下滑面板用,本例并不关心,可忽略

private View lastContainer = null;

private Parking lastItem = null;

private void createItem(ViewHolder helper, final Parking item,

final int position) {

ImageView item_0 = helper.getView(R.id.item_0);

VolleyHelper.loadImageByVolley(item.getImage(), item_0,

R.drawable.default_face);

helper.setText(R.id.item_1, item.getName());

helper.setText(R.id.item_2, item.getPrice());

// helper.setText(R.id.item_3, item.getName());

final View container = helper.getView(R.id.container);

final int maxHeight = 140;// 菜单的高

if (item.isOpen()) {

container.setLayoutParams(new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT, maxHeight));

} else {

container.setLayoutParams(new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT, 0));

}

helper.getView(R.id.item_4).setOnClickListener(

new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if (container == lastContainer) {

doSliding(container, maxHeight);

item.setOpen(!item.isOpen());

} else {

doSliding(container, maxHeight);

item.setOpen(true);

if (lastContainer != null) {

doSliding(lastContainer, 0);

lastItem.setOpen(false);

}

lastContainer = container;

lastItem = item;

}

}

});

helper.getView(R.id.btn_0).setOnClickListener(

new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Log.i("tag", "btn_0[" + position + "]");

}

});

helper.getView(R.id.btn_1).setOnClickListener(

new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Log.i("tag", "btn_1[" + position + "]");

}

});

helper.getView(R.id.btn_2).setOnClickListener(

new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Log.i("tag", "btn_2[" + position + "]");

}

});

helper.getView(R.id.btn_3).setOnClickListener(

new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Log.i("tag", "btn_3[" + position + "]");

}

});

helper.getView(R.id.btn_4).setOnClickListener(

new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Log.i("tag", "btn_4[" + position + "]");

}

});

}

private void doSliding(View view, int maxHeight) {

ViewWrapper wrapper = new ViewWrapper(view);

if (view.getHeight() == 0) {

ObjectAnimator.ofInt(wrapper, "height", maxHeight).setDuration(400)

.start();

} else {

ObjectAnimator.ofInt(wrapper, "height", 0).setDuration(400).start();

}

}

@Override

public void onResume() {

super.onResume();

}

@Override

public void onPause() {

super.onPause();

}

@Override

public void onDestroy() {

super.onDestroy();

}

@Override

public void onDestroyView() {

// TODO Auto-generated method stub

super.onDestroyView();

}

}

--------------------------------------------------------------------------------------------------------------------------------------

布局

android:id="@+id/swipeRefreshLayout"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/listView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:footerDividersEnabled="false"

android:headerDividersEnabled="false"

android:cacheColorHint="@android:color/transparent" />

--------------------------------------------------------------------------------------------------------------------------------------

/*

* 分页

*/

public class Pagination {

public int page=1;

public int size=10;

public void reset(){

page=1;

size=10;

}

public int nextPage(){

return page++;

}

}

--------------------------------------------------------------------------------------------------------------------------------------

https://github.com/android-cjj/Android-MaterialRefreshLayout

小奋斗文章

--------------------------------------------------------------------------------------------------------------------------------------

android下拉分页加载,Android LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构相关推荐

  1. 微信小程序php分页加载,微信小程序分页加载

    分页加载功能大家遇到的应该会经常遇到,应用场景也很多,例如微博,QQ,微信朋友圈以及新闻类应用,都会有分页加载的功能,这不仅节省了我们用户的流量,还提升了用户体验.那么今天的这篇文章就是介绍微信小程序 ...

  2. Android新浪微博分页加载,Android仿新浪微博自定义ListView下拉刷新(4)

    自定义PullToRefreshListView继承ListView,在ListView头部添加一个下拉的头部布局.跟ListView用法完全一致. 此处详细介绍Adapter的详细代码. 1.首先给 ...

  3. 【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )

    文章目录 一.不同版本的 DEX 加载 1.Android 8.0 版本 DEX 加载分析 2.Android 6.0 版本 DEX 加载分析 3.Android 5.0 版本 DEX 加载分析 一. ...

  4. android webview 多次加载,android – 重复webview,我想在每个加载相同

    如何在分屏中显示两个类似的webview,我想复制一个webview,我想同时滚动两个.谢谢 android:layout_width="match_parent" android ...

  5. 【Vue学习总结】22.使用Mint UI的infinite-scroll实现上拉分页加载

    接上篇<21.Vue-UI框架之Mint UI的使用> 上一篇我们讲解了Vue的UI框架Mint UI的使用,本篇我们来通过Mint UI提供的infinite-scroll组件结合api ...

  6. [小黄书小程序]主页面笔记图片高度自适应及上拉无限加载及下拉更新

    上一章我们实现了小黄书小程序标签栏的左右滑动和弹出框UI功能,今天我们会开始实现主页面中笔记的呈现. 主要的功能会囊括以下几个方面: 笔记的两列式布局: 一行只是显示两个笔记.且每个笔记的封面图片的高 ...

  7. 深入理解Android Paging分页加载库

    来新公司半年多,最近一直在参与 Andorid 团队的架构升级工作.最近在图片选择库中使用了 paging 作为分页加载框架.顺便阅读了一下paging的源码.在这里记录一下. 初次接除 paging ...

  8. Android GridView横向滚动,分页加载数据

    转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/51007348 始终觉得讲ui效果要先放上效果图,要不让其他人好不容易看完了, ...

  9. 基于Android官方AsyncListUtil优化经典ListView分页加载机制(二)

    基于Android官方AsyncListUtil优化经典ListView分页加载机制(二) 我写的附录文章1,介绍了如何使用Android官方的分页加载框架AsyncListUtil优化改进常见的Re ...

  10. php下拉上滑分页,Flutter实现下拉刷新 上拉分页加载更多

    一.Flutter实现下拉刷新和上拉分页加载更多 在Flutter官方sdk中给我们提供了下拉刷新的组件RefreshIndicator.但是没有提供上拉分页加载更多的组件.但是在Flutter Li ...

最新文章

  1. Rxjs--创建操作符
  2. hexo的yelee主题本地搜索故障
  3. mybatis新增返回主键值
  4. linux 内存溢出排查_【开发者成长】JAVA 线上故障排查完整套路!
  5. Linux下文件系统目录结构
  6. foreach为什么不能给数组赋值
  7. NoSQL数据库探讨- 为什么要用非关系数据库?
  8. function adapter bind(C++11)
  9. JAVA 常见的类集之CollectionListQueue
  10. 手把手教你做iOS的soap应用(webservice)
  11. PHP流量卡发货查单系统源码 流量卡物流发货运单号查询平台 一键安装版
  12. 百度阿里网易大疆等大小厂前端校招面筋
  13. java try catch 输入字符串_java – 没有在try / catch中捕获NumberFormatException
  14. 道一云OA系统排名?道一云OA办公系统怎么选?什么是用户口碑最好的道一云OA系统?
  15. Linux shell 用sed删除第一行、最后一行或增加删除某行
  16. xbox360 功率测试软件,Xbox 360精英版噪声及功率测试
  17. StringTokenizer的用法详解
  18. 回忆杀,pythonQ版泡泡堂
  19. 什么是Dimension table(维表)
  20. 部分APP无法代理抓包的原因及解决方法(flutter 应用抓包)

热门文章

  1. Junit第一次使用
  2. 初学Jmeter的摘抄学习总结----------基础知识篇
  3. axis1 创建service服务端 , axis1 客户端
  4. 【夯实PHP基础】PHP发送邮件(PHPMailer)
  5. C++的string类
  6. android 定时请求(两种实现方式)
  7. 上周热点回顾(6.4-6.10)
  8. wxpython记录生词GUI程序
  9. python中datetime模块是以什么时间为基础_python基础-time和datetime模块
  10. Python爬虫框架Scrapy报错:ModuleNotFoundError: No module named 'scrapy'