android UI 往右滑动,滑动到最后一页就自动加载数据并显示
如图:

Java代码  
  1. package cn.anycall.ju;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import android.app.Activity;
  7. import android.content.ActivityNotFoundException;
  8. import android.content.Context;
  9. import android.content.Intent;
  10. import android.content.pm.ResolveInfo;
  11. import android.os.Bundle;
  12. import android.os.Handler;
  13. import android.os.Looper;
  14. import android.os.Message;
  15. import android.view.KeyEvent;
  16. import android.view.View;
  17. import android.view.Window;
  18. import android.widget.AdapterView;
  19. import android.widget.AdapterView.OnItemClickListener;
  20. import android.widget.GridView;
  21. import android.widget.Toast;
  22. import cn.anycall.ju.ScrollLayout.OnScreenChangeListenerDataLoad;
  23. /**
  24. * GridView分页显示安装的应用程序
  25. */
  26. public class AllAppList extends Activity {
  27. private ScrollLayout mScrollLayout;
  28. private static final float APP_PAGE_SIZE = 4.0f;
  29. private Context mContext;
  30. private PageControlView pageControl;
  31. public MyHandler myHandler;
  32. public int n=0;
  33. private DataLoading dataLoad;
  34. @Override
  35. protected void onCreate(Bundle savedInstanceState) {
  36. // TODO Auto-generated method stub
  37. super.onCreate(savedInstanceState);
  38. this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  39. mContext = this;
  40. setContentView(R.layout.main);
  41. dataLoad = new DataLoading();
  42. mScrollLayout = (ScrollLayout)findViewById(R.id.ScrollLayoutTest);
  43. myHandler = new MyHandler(this,1);
  44. //起一个线程更新数据
  45. MyThread m = new MyThread();
  46. new Thread(m).start();
  47. }
  48. /**
  49. * gridView 的onItemLick响应事件
  50. */
  51. public OnItemClickListener listener = new OnItemClickListener() {
  52. public void onItemClick(AdapterView<?> parent, View view, int position,
  53. long id) {
  54. // TODO Auto-generated method stub
  55. System.out.println("position="+position);
  56. }
  57. };
  58. @Override
  59. protected void onDestroy() {
  60. // TODO Auto-generated method stub
  61. android.os.Process.killProcess(android.os.Process.myPid());
  62. super.onDestroy();
  63. }
  64. @Override
  65. public boolean onKeyDown(int keyCode, KeyEvent event) {
  66. // TODO Auto-generated method stub
  67. if (keyCode == KeyEvent.KEYCODE_BACK) {
  68. finish();
  69. return true;
  70. }
  71. return super.onKeyDown(keyCode, event);
  72. }
  73. // 更新后台数据
  74. class MyThread implements Runnable {
  75. public void run() {
  76. try {
  77. Thread.sleep(1000*3);
  78. } catch (InterruptedException e) {
  79. // TODO Auto-generated catch block
  80. e.printStackTrace();
  81. }
  82. String msglist = "1";
  83. Message msg = new Message();
  84. Bundle b = new Bundle();// 存放数据
  85. b.putString("rmsg", msglist);
  86. msg.setData(b);
  87. AllAppList.this.myHandler.sendMessage(msg); // 向Handler发送消息,更新UI
  88. }
  89. }
  90. class MyHandler extends Handler {
  91. private AllAppList mContext;
  92. public MyHandler(Context conn,int a) {
  93. mContext = (AllAppList)conn;
  94. }
  95. public MyHandler(Looper L) {
  96. super(L);
  97. }
  98. // 子类必须重写此方法,接受数据
  99. @Override
  100. public void handleMessage(Message msg) {
  101. // TODO Auto-generated method stub
  102. super.handleMessage(msg);
  103. Bundle b = msg.getData();
  104. String rmsg = b.getString("rmsg");
  105. if ("1".equals(rmsg)) {
  106. // do nothing
  107. List<Map> list = new ArrayList<Map>();
  108. for(int i =0;i<16;i++){
  109. n++;
  110. Map map = new HashMap();
  111. map.put("name", n);
  112. list.add(map);
  113. }
  114. int pageNo = (int)Math.ceil( list.size()/APP_PAGE_SIZE);
  115. for (int i = 0; i < pageNo; i++) {
  116. GridView appPage = new GridView(mContext);
  117. // get the "i" page data
  118. appPage.setAdapter(new AppAdapter(mContext, list, i));
  119. appPage.setNumColumns(2);
  120. appPage.setOnItemClickListener(listener);
  121. mScrollLayout.addView(appPage);
  122. }
  123. //加载分页
  124. pageControl = (PageControlView) findViewById(R.id.pageControl);
  125. pageControl.bindScrollViewGroup(mScrollLayout);
  126. //加载分页数据
  127. dataLoad.bindScrollViewGroup(mScrollLayout);
  128. }
  129. }
  130. }
  131. //分页数据
  132. class DataLoading {
  133. private int count;
  134. public void bindScrollViewGroup(ScrollLayout scrollViewGroup) {
  135. this.count=scrollViewGroup.getChildCount();
  136. scrollViewGroup.setOnScreenChangeListenerDataLoad(new OnScreenChangeListenerDataLoad() {
  137. public void onScreenChange(int currentIndex) {
  138. // TODO Auto-generated method stub
  139. generatePageControl(currentIndex);
  140. }
  141. });
  142. }
  143. private void generatePageControl(int currentIndex){
  144. //如果到最后一页,就加载16条记录
  145. if(count==currentIndex+1){
  146. MyThread m = new MyThread();
  147. new Thread(m).start();
  148. }
  149. }
  150. }
  151. }
Java代码  
  1. package cn.anycall.ju;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Map;
  5. import android.content.Context;
  6. import android.content.pm.PackageManager;
  7. import android.content.pm.ResolveInfo;
  8. import android.view.LayoutInflater;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.widget.BaseAdapter;
  12. import android.widget.ImageView;
  13. import android.widget.TextView;
  14. import cn.anycall.ju.R;
  15. public class AppAdapter extends BaseAdapter {
  16. private List<Map> mList;
  17. private Context mContext;
  18. public static final int APP_PAGE_SIZE = 4;
  19. private PackageManager pm;
  20. public AppAdapter(Context context, List<Map> list, int page) {
  21. mContext = context;
  22. pm = context.getPackageManager();
  23. mList = new ArrayList<Map>();
  24. int i = page * APP_PAGE_SIZE;
  25. int iEnd = i+APP_PAGE_SIZE;
  26. while ((i<list.size()) && (i<iEnd)) {
  27. mList.add(list.get(i));
  28. i++;
  29. }
  30. }
  31. public int getCount() {
  32. // TODO Auto-generated method stub
  33. return mList.size();
  34. }
  35. public Object getItem(int position) {
  36. // TODO Auto-generated method stub
  37. return mList.get(position);
  38. }
  39. public long getItemId(int position) {
  40. // TODO Auto-generated method stub
  41. return position;
  42. }
  43. public View getView(int position, View convertView, ViewGroup parent) {
  44. // TODO Auto-generated method stub
  45. Map appInfo = mList.get(position);
  46. AppItem appItem;
  47. if (convertView == null) {
  48. View v = LayoutInflater.from(mContext).inflate(R.layout.app_item, null);
  49. appItem = new AppItem();
  50. appItem.mAppIcon = (ImageView)v.findViewById(R.id.imgdetail);
  51. appItem.mAppName = (TextView)v.findViewById(R.id.tuaninfo);
  52. v.setTag(appItem);
  53. convertView = v;
  54. } else {
  55. appItem = (AppItem)convertView.getTag();
  56. }
  57. // set the icon
  58. appItem.mAppIcon.setImageResource(R.drawable.icon);
  59. // set the app name
  60. appItem.mAppName.setText(appInfo.get("name").toString());
  61. return convertView;
  62. }
  63. /**
  64. * 每个应用显示的内容,包括图标和名称
  65. * @author Yao.GUET
  66. *
  67. */
  68. class AppItem {
  69. ImageView mAppIcon;
  70. TextView mAppName;
  71. }
  72. }
Java代码  
  1. package cn.anycall.ju;
  2. import android.content.Context;
  3. import android.util.AttributeSet;
  4. import android.widget.ImageView;
  5. import android.widget.LinearLayout;
  6. import cn.anycall.ju.R;
  7. import cn.anycall.ju.ScrollLayout.OnScreenChangeListener;
  8. public class PageControlView extends LinearLayout {
  9. private Context context;
  10. private int count;
  11. public void bindScrollViewGroup(ScrollLayout scrollViewGroup) {
  12. this.count=scrollViewGroup.getChildCount();
  13. System.out.println("count="+count);
  14. generatePageControl(scrollViewGroup.getCurrentScreenIndex());
  15. scrollViewGroup.setOnScreenChangeListener(new OnScreenChangeListener() {
  16. public void onScreenChange(int currentIndex) {
  17. // TODO Auto-generated method stub
  18. generatePageControl(currentIndex);
  19. }
  20. });
  21. }
  22. public PageControlView(Context context) {
  23. super(context);
  24. this.init(context);
  25. }
  26. public PageControlView(Context context, AttributeSet attrs) {
  27. super(context, attrs);
  28. this.init(context);
  29. }
  30. private void init(Context context) {
  31. this.context=context;
  32. }
  33. private void generatePageControl(int currentIndex) {
  34. this.removeAllViews();
  35. int pageNum = 6; // 显示多少个
  36. int pageNo = currentIndex+1; //第几页
  37. int pageSum = this.count; //总共多少页
  38. if(pageSum>1){
  39. int currentNum = (pageNo % pageNum == 0 ? (pageNo / pageNum) - 1
  40. : (int) (pageNo / pageNum))
  41. * pageNum;
  42. if (currentNum < 0)
  43. currentNum = 0;
  44. if (pageNo > pageNum){
  45. ImageView imageView = new ImageView(context);
  46. imageView.setImageResource(R.drawable.zuo);
  47. this.addView(imageView);
  48. }
  49. for (int i = 0; i < pageNum; i++) {
  50. if ((currentNum + i + 1) > pageSum || pageSum < 2)
  51. break;
  52. ImageView imageView = new ImageView(context);
  53. if(currentNum + i + 1 == pageNo){
  54. imageView.setImageResource(R.drawable.page_indicator_focused);
  55. }else{
  56. imageView.setImageResource(R.drawable.page_indicator);
  57. }
  58. this.addView(imageView);
  59. }
  60. if (pageSum > (currentNum + pageNum)) {
  61. ImageView imageView = new ImageView(context);
  62. imageView.setImageResource(R.drawable.you);
  63. this.addView(imageView);
  64. }
  65. }
  66. }
  67. }
Java代码  
  1. package cn.anycall.ju;
  2. import android.content.Context;
  3. import android.graphics.Canvas;
  4. import android.util.AttributeSet;
  5. import android.util.Log;
  6. import android.view.MotionEvent;
  7. import android.view.VelocityTracker;
  8. import android.view.View;
  9. import android.view.ViewConfiguration;
  10. import android.view.ViewGroup;
  11. import android.widget.Scroller;
  12. /**
  13. * 仿Launcher中的WorkSapce,可以左右滑动切换屏幕的类
  14. *
  15. */
  16. public class ScrollLayout extends ViewGroup {
  17. private static final String TAG = "ScrollLayout";
  18. private Scroller mScroller;
  19. private VelocityTracker mVelocityTracker;
  20. private int mCurScreen;
  21. private int mDefaultScreen = 0;
  22. private static final int TOUCH_STATE_REST = 0;
  23. private static final int TOUCH_STATE_SCROLLING = 1;
  24. private static final int SNAP_VELOCITY = 600;
  25. private int mTouchState = TOUCH_STATE_REST;
  26. private int mTouchSlop;
  27. private float mLastMotionX;
  28. private float mLastMotionY;
  29. private int currentScreenIndex = 0;
  30. public int getCurrentScreenIndex() {
  31. return currentScreenIndex;
  32. }
  33. public void setCurrentScreenIndex(int currentScreenIndex) {
  34. this.currentScreenIndex = currentScreenIndex;
  35. }
  36. public ScrollLayout(Context context, AttributeSet attrs) {
  37. this(context, attrs, 0);
  38. // TODO Auto-generated constructor stub
  39. }
  40. public ScrollLayout(Context context, AttributeSet attrs, int defStyle) {
  41. super(context, attrs, defStyle);
  42. // TODO Auto-generated constructor stub
  43. mScroller = new Scroller(context);
  44. mCurScreen = mDefaultScreen;
  45. mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();
  46. }
  47. @Override
  48. protected void onLayout(boolean changed, int l, int t, int r, int b) {
  49. // TODO Auto-generated method stub
  50. int childLeft = 0;
  51. final int childCount = getChildCount();
  52. System.out.println("childCount=" + childCount);
  53. for (int i = 0; i < childCount; i++) {
  54. final View childView = getChildAt(i);
  55. if (childView.getVisibility() != View.GONE) {
  56. final int childWidth = childView.getMeasuredWidth();
  57. childView.layout(childLeft, 0, childLeft + childWidth,
  58. childView.getMeasuredHeight());
  59. childLeft += childWidth;
  60. }
  61. }
  62. }
  63. @Override
  64. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  65. Log.e(TAG, "onMeasure");
  66. super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  67. final int width = MeasureSpec.getSize(widthMeasureSpec);
  68. final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
  69. if (widthMode != MeasureSpec.EXACTLY) {
  70. throw new IllegalStateException(
  71. "ScrollLayout only canmCurScreen run at EXACTLY mode!");
  72. }
  73. final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
  74. if (heightMode != MeasureSpec.EXACTLY) {
  75. throw new IllegalStateException(
  76. "ScrollLayout only can run at EXACTLY mode!");
  77. }
  78. // The children are given the same width and height as the scrollLayout
  79. final int count = getChildCount();
  80. for (int i = 0; i < count; i++) {
  81. getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec);
  82. }
  83. System.out.println("moving to screen " + mCurScreen);
  84. scrollTo(mCurScreen * width, 0);
  85. }
  86. /**
  87. * According to the position of current layout scroll to the destination
  88. * page.
  89. */
  90. public void snapToDestination() {
  91. final int screenWidth = getWidth();
  92. final int destScreen = (getScrollX() + screenWidth / 2) / screenWidth;
  93. snapToScreen(destScreen);
  94. }
  95. public void snapToScreen(int whichScreen) {
  96. // get the valid layout page
  97. whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));
  98. if (getScrollX() != (whichScreen * getWidth())) {
  99. final int delta = whichScreen * getWidth() - getScrollX();
  100. mScroller.startScroll(getScrollX(), 0, delta, 0,
  101. Math.abs(delta) * 2);
  102. mCurScreen = whichScreen;
  103. invalidate(); // Redraw the layout
  104. }
  105. }
  106. public void setToScreen(int whichScreen) {
  107. whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));
  108. mCurScreen = whichScreen;
  109. scrollTo(whichScreen * getWidth(), 0);
  110. }
  111. public int getCurScreen() {
  112. return mCurScreen;
  113. }
  114. @Override
  115. public void computeScroll() {
  116. // TODO Auto-generated method stub
  117. if (mScroller.computeScrollOffset()) {
  118. scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
  119. postInvalidate();
  120. }
  121. }
  122. @Override
  123. public boolean onTouchEvent(MotionEvent event) {
  124. // TODO Auto-generated method stub
  125. if (mVelocityTracker == null) {
  126. mVelocityTracker = VelocityTracker.obtain();
  127. }
  128. mVelocityTracker.addMovement(event);
  129. final int action = event.getAction();
  130. final float x = event.getX();
  131. final float y = event.getY();
  132. switch (action) {
  133. case MotionEvent.ACTION_DOWN:
  134. Log.e(TAG, "event down!");
  135. if (!mScroller.isFinished()) {
  136. mScroller.abortAnimation();
  137. }
  138. mLastMotionX = x;
  139. break;
  140. case MotionEvent.ACTION_MOVE:
  141. int deltaX = (int) (mLastMotionX - x);
  142. mLastMotionX = x;
  143. scrollBy(deltaX, 0);
  144. break;
  145. case MotionEvent.ACTION_UP:
  146. Log.e(TAG, "event : up");
  147. // if (mTouchState == TOUCH_STATE_SCROLLING) {
  148. final VelocityTracker velocityTracker = mVelocityTracker;
  149. velocityTracker.computeCurrentVelocity(1000);
  150. int velocityX = (int) velocityTracker.getXVelocity();
  151. Log.e(TAG, "velocityX:" + velocityX);
  152. if (velocityX > SNAP_VELOCITY && mCurScreen > 0) {
  153. // Fling enough to move left
  154. Log.e(TAG, "snap left");
  155. onScreenChangeListener.onScreenChange(mCurScreen - 1);
  156. System.out.println("mCurScreen=" + (mCurScreen - 1));
  157. snapToScreen(mCurScreen - 1);
  158. } else if (velocityX < -SNAP_VELOCITY
  159. && mCurScreen < getChildCount() - 1) {
  160. // Fling enough to move right
  161. Log.e(TAG, "snap right");
  162. onScreenChangeListener.onScreenChange(mCurScreen + 1);
  163. //只往右移动才加载数据
  164. onScreenChangeListenerDataLoad.onScreenChange(mCurScreen+1);
  165. snapToScreen(mCurScreen + 1);
  166. } else {
  167. snapToDestination();
  168. }
  169. if (mVelocityTracker != null) {
  170. mVelocityTracker.recycle();
  171. mVelocityTracker = null;
  172. }
  173. // }
  174. mTouchState = TOUCH_STATE_REST;
  175. break;
  176. case MotionEvent.ACTION_CANCEL:
  177. mTouchState = TOUCH_STATE_REST;
  178. break;
  179. }
  180. return true;
  181. }
  182. @Override
  183. public boolean onInterceptTouchEvent(MotionEvent ev) {
  184. // TODO Auto-generated method stub
  185. Log.e(TAG, "onInterceptTouchEvent-slop:" + mTouchSlop);
  186. final int action = ev.getAction();
  187. if ((action == MotionEvent.ACTION_MOVE)
  188. && (mTouchState != TOUCH_STATE_REST)) {
  189. return true;
  190. }
  191. final float x = ev.getX();
  192. final float y = ev.getY();
  193. switch (action) {
  194. case MotionEvent.ACTION_MOVE:
  195. final int xDiff = (int) Math.abs(mLastMotionX - x);
  196. if (xDiff > mTouchSlop) {
  197. mTouchState = TOUCH_STATE_SCROLLING;
  198. }
  199. break;
  200. case MotionEvent.ACTION_DOWN:
  201. mLastMotionX = x;
  202. mLastMotionY = y;
  203. mTouchState = mScroller.isFinished() ? TOUCH_STATE_REST
  204. : TOUCH_STATE_SCROLLING;
  205. break;
  206. case MotionEvent.ACTION_CANCEL:
  207. case MotionEvent.ACTION_UP:
  208. mTouchState = TOUCH_STATE_REST;
  209. break;
  210. }
  211. return mTouchState != TOUCH_STATE_REST;
  212. }
  213. //分页监听
  214. public interface OnScreenChangeListener {
  215. void onScreenChange(int currentIndex);
  216. }
  217. private OnScreenChangeListener onScreenChangeListener;
  218. public void setOnScreenChangeListener(
  219. OnScreenChangeListener onScreenChangeListener) {
  220. this.onScreenChangeListener = onScreenChangeListener;
  221. }
  222. //动态数据监听
  223. public interface OnScreenChangeListenerDataLoad {
  224. void onScreenChange(int currentIndex);
  225. }
  226. private OnScreenChangeListenerDataLoad onScreenChangeListenerDataLoad;
  227. public void setOnScreenChangeListenerDataLoad(OnScreenChangeListenerDataLoad onScreenChangeListenerDataLoad) {
  228. this.onScreenChangeListenerDataLoad = onScreenChangeListenerDataLoad;
  229. }
  230. }

main.xml

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"  android:text="仿淘宝聚划算"/>
  9. <RelativeLayout
  10. android:id="@+id/myView"
  11. android:layout_width="fill_parent"
  12. android:layout_height="fill_parent"
  13. >
  14. <cn.anycall.ju.ScrollLayout
  15. xmlns:android="http://schemas.android.com/apk/res/android"
  16. android:id="@+id/ScrollLayoutTest"
  17. android:layout_width="fill_parent"
  18. android:layout_height="fill_parent"  android:background="#000000" >
  19. </cn.anycall.ju.ScrollLayout>
  20. <cn.anycall.ju.PageControlView
  21. android:id="@+id/pageControl"
  22. android:layout_width="fill_parent"
  23. android:layout_height="40px"
  24. android:background="#8f00000f"
  25. android:layout_alignParentBottom="true"
  26. android:gravity="center"/>
  27. </RelativeLayout>
  28. </LinearLayout>

app_item.xml

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. >
  6. <RelativeLayout android:id="@+id/alllayout" android:layout_width="wrap_content"  android:layout_height="wrap_content">
  7. <RelativeLayout android:id="@+id/imglayout" android:layout_width="160dp"  android:layout_height="160dp" android:background="@drawable/mer_border">
  8. <ImageView android:id="@+id/imgdetail" android:layout_width="145dp"  android:layout_height="145dp" android:layout_margin="8dp" />
  9. <TextView android:id="@+id/price" android:layout_width="180dp"  android:layout_height="wrap_content" android:text="12345" android:layout_alignParentBottom="true" android:background="#C02000" android:textColor="#FFFFFF"/>
  10. <TextView android:id="@+id/look" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="去看看" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:background="#C02000" android:textColor="#FFFFFF"/>
  11. </RelativeLayout>
  12. <TextView android:id="@+id/tuaninfo" android:layout_width="fill_parent"
  13. android:layout_height="wrap_content" android:textSize="16dp"
  14. android:maxLines="2" android:layout_below="@id/imglayout"
  15. android:ellipsize="end" android:text="dddddddddd"/>"
  16. </RelativeLayout>
  17. </RelativeLayout>

转载于:https://www.cnblogs.com/Free-Thinker/p/3391251.html

Android GridView 分页加载数据相关推荐

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

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

  2. listView分批和分页加载数据

    在Android应用程序中,有时候会向listView中加载很多数据,向listView中加载数据是一个耗时的过程,加载过多的数据用户停留在listView上,一直等待,给用户的体验特别不好,比如向服 ...

  3. 分组显示的ListView分页加载数据

    参考:  http://www.cnblogs.com/qianxudetianxia/archive/2011/06/07/2074326.html 分组的ListView的拖拽  http://w ...

  4. 微信小程序数据拼接_最佳方式实现微信小程序分页加载数据

    一般小程序做分页加载数据,会做一些下拉加载更多.然后上拉刷新的操作.数据放在一个for循环里去加载,数据源是一个数组对象.在加载下一页数据时,将下一页的数据拼到当前数组后面.这样的确可以实现分页加载数 ...

  5. 小程序下滑分页加载数据

    小程序下滑分页加载数据 1. 在data定义page参数 params: {pageNum: 1,pageSize: 10,total: 0,searchValue: ''}, 2. 请求接口数据 g ...

  6. 微信小程序 实现分页加载数据

    实现分页加载数据要用到页面加载触底事件 onReachBottom: function () { } 首先在 js 定义初始数据 data: { //用来接收后端数据list:[], //当前页cur ...

  7. Android中ListView分页加载数据

    熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容 ...

  8. Android Trick 3: GridView动态加载数据情况下,选中状态的实现

    GridView使用AdapterView动态加载数据情况下,无论是在onCreate.Onstart.OnResume方法中调用getChildCount()均为0,这说明数据并没有在Activit ...

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

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

  10. List 分页加载数据控制机制

    分页加载是一种应用很广泛的数据展示控制机制,相信绝大多数开发者对于这一套机制都非常熟悉.这篇文章的主要目的结合实际的使用场景,对以往在开发中遇到一些概念进行梳理,归纳的同时加深理解,也希望能帮助更多刚 ...

最新文章

  1. 自制树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食,成本300+元...
  2. 【攻防世界020】easyRE1
  3. 【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式
  4. ACR Code Pacs
  5. springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用...
  6. 蓝桥杯试题:矩阵翻硬币
  7. [Java] 内部类总结
  8. Java数组的扩容与缩减
  9. Android版的股票行情K线图开发
  10. 使用python读写文件_使用Python读写文件(指南)
  11. 如何引用服务器lua文件,Lua教程(一):在C++中嵌入Lua脚本
  12. IBM P系列小型机更换电池步骤
  13. 中国提取市场趋势报告、技术动态创新及市场预测
  14. Qt之QTextEdit
  15. git与gerrit基础概念
  16. 计算机系统要素高清pdf,计算机系统要素:从零开始构建现代计算机[PDF][43.21MB]...
  17. Shell命令:echo介绍,echo如何输出带颜色的文本
  18. python中的array是什么意思_python中数组(numpy.array)的基本操作
  19. springMVC第一天——入门、整合与参数绑定
  20. 机加工行业如何打造MES系统,本文让你一目了然

热门文章

  1. 算法 -- 四种方法获取的最长“回文串”,并对时间复杂进行分析对比PHP
  2. 绝版经典《Linux与UNIX Shell编程指南》中文文字PDF版
  3. Skype For Business 2015综合部署系列四:安装Skype Server系统 1
  4. Puppet File资源介绍(贰拾)
  5. 《精通LabVIEW虚拟仪器程序设计与案例实现》一2.6 VI的创建与编辑
  6. 手机自动化测试:Appium源码分析之跟踪代码分析七
  7. Cisco ASA防火墙基础--转载http://wenzhongxiang.blog.51cto.com/6370734/1249746
  8. 使用AvgPooling替换AdaptivePooling,池化padding,global average pooling 与 average pooling 的差别
  9. 用姿态补偿雷达数据畸变的文字想法
  10. linux程序执行时内存情况