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

  如图:
\


  Java代码

  package cn.anycall.ju;  import java.util.ArrayList;  import java.util.HashMap;  import java.util.List;  import java.util.Map;  import android.app.Activity;  import android.content.ActivityNotFoundException;  import android.content.Context;  import android.content.Intent;  import android.content.pm.ResolveInfo;  import android.os.Bundle;  import android.os.Handler;  import android.os.Looper;  import android.os.Message;  import android.view.KeyEvent;  import android.view.View;  import android.view.Window;  import android.widget.AdapterView;  import android.widget.AdapterView.OnItemClickListener;  import android.widget.GridView;  import android.widget.Toast;  import cn.anycall.ju.ScrollLayout.OnScreenChangeListenerDataLoad;  /**  * GridView分页显示安装的应用程序  */  public class AllAppList extends Activity {  private ScrollLayout mScrollLayout;  private static final float APP_PAGE_SIZE = 4.0f;  private Context mContext;  private PageControlView pageControl;  public MyHandler myHandler;  public int n=0;  private DataLoading dataLoad;  @Override  protected void onCreate(Bundle savedInstanceState) {  // TODO Auto-generated method stub  super.onCreate(savedInstanceState);  this.requestWindowFeature(Window.FEATURE_NO_TITLE);  mContext = this;  setContentView(R.layout.main);  dataLoad = new DataLoading();  mScrollLayout = (ScrollLayout)findViewById(R.id.ScrollLayoutTest);  myHandler = new MyHandler(this,1);  //起一个线程更新数据  MyThread m = new MyThread();  new Thread(m).start();  }  /**  * gridView 的onItemLick响应事件  */  public OnItemClickListener listener = new OnItemClickListener() {  public void onItemClick(AdapterView<?> parent, View view, int position,  long id) {  // TODO Auto-generated method stub  System.out.println("position="+position);  }  };  @Override  protected void onDestroy() {  // TODO Auto-generated method stub  android.os.Process.killProcess(android.os.Process.myPid());  super.onDestroy();  }  @Override  public boolean onKeyDown(int keyCode, KeyEvent event) {  // TODO Auto-generated method stub  if (keyCode == KeyEvent.KEYCODE_BACK) {  finish();  return true;  }  return super.onKeyDown(keyCode, event);  }  // 更新后台数据  class MyThread implements Runnable {  public void run() {  try {  Thread.sleep(1000*3);  } catch (InterruptedException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  String msglist = "1";  Message msg = new Message();  Bundle b = new Bundle();// 存放数据  b.putString("rmsg", msglist);  msg.setData(b);  AllAppList.this.myHandler.sendMessage(msg); // 向Handler发送消息,更新UI  }  }  class MyHandler extends Handler {  private AllAppList mContext;  public MyHandler(Context conn,int a) {  mContext = (AllAppList)conn;  }  public MyHandler(Looper L) {  super(L);  }  // 子类必须重写此方法,接受数据  @Override  public void handleMessage(Message msg) {  // TODO Auto-generated method stub  super.handleMessage(msg);  Bundle b = msg.getData();  String rmsg = b.getString("rmsg");  if ("1".equals(rmsg)) {  // do nothing  List<Map> list = new ArrayList<Map>();  for(int i =0;i<16;i++){  n++;  Map map = new HashMap();  map.put("name", n);  list.add(map);  }  int pageNo = (int)Math.ceil( list.size()/APP_PAGE_SIZE);  for (int i = 0; i < pageNo; i++) {  GridView appPage = new GridView(mContext);  // get the "i" page data  appPage.setAdapter(new AppAdapter(mContext, list, i));  appPage.setNumColumns(2);  appPage.setOnItemClickListener(listener);  mScrollLayout.addView(appPage);  }  //加载分页  pageControl = (PageControlView) findViewById(R.id.pageControl);  pageControl.bindScrollViewGroup(mScrollLayout);  //加载分页数据  dataLoad.bindScrollViewGroup(mScrollLayout);  }  }  }  //分页数据  class DataLoading {  private int count;  public void bindScrollViewGroup(ScrollLayout scrollViewGroup) {  this.count=scrollViewGroup.getChildCount();  scrollViewGroup.setOnScreenChangeListenerDataLoad(new OnScreenChangeListenerDataLoad() {  public void onScreenChange(int currentIndex) {  // TODO Auto-generated method stub  generatePageControl(currentIndex);  }  });  }  private void generatePageControl(int currentIndex){  //如果到最后一页,就加载16条记录  if(count==currentIndex+1){  MyThread m = new MyThread();  new Thread(m).start();  }  }  }  }
  Java代码
  package cn.anycall.ju;  import java.util.ArrayList;  import java.util.List;  import java.util.Map;  import android.content.Context;  import android.content.pm.PackageManager;  import android.content.pm.ResolveInfo;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.BaseAdapter;  import android.widget.ImageView;  import android.widget.TextView;  import cn.anycall.ju.R;  public class AppAdapter extends BaseAdapter {  private List<Map> mList;  private Context mContext;  public static final int APP_PAGE_SIZE = 4;  private PackageManager pm;  public AppAdapter(Context context, List<Map> list, int page) {  mContext = context;  pm = context.getPackageManager();  mList = new ArrayList<Map>();  int i = page * APP_PAGE_SIZE;  int iEnd = i+APP_PAGE_SIZE;  while ((i<list.size()) && (i<iEnd)) {  mList.add(list.get(i));  i++;  }  }  public int getCount() {  // TODO Auto-generated method stub  return mList.size();  }  public Object getItem(int position) {  // TODO Auto-generated method stub  return mList.get(position);  }  public long getItemId(int position) {  // TODO Auto-generated method stub  return position;  }  public View getView(int position, View convertView, ViewGroup parent) {  // TODO Auto-generated method stub  Map appInfo = mList.get(position);  AppItem appItem;  if (convertView == null) {  View v = LayoutInflater.from(mContext).inflate(R.layout.app_item, null);  appItem = new AppItem();  appItem.mAppIcon = (ImageView)v.findViewById(R.id.imgdetail);  appItem.mAppName = (TextView)v.findViewById(R.id.tuaninfo);  v.setTag(appItem);  convertView = v;  } else {  appItem = (AppItem)convertView.getTag();  }  // set the icon  appItem.mAppIcon.setImageResource(R.drawable.icon);  // set the app name  appItem.mAppName.setText(appInfo.get("name").toString());  return convertView;  }  /**  * 每个应用显示的内容,包括图标和名称  * @author Yao.GUET  *  */  class AppItem {  ImageView mAppIcon;  TextView mAppName;  }  }


转载:http://www.adobex.com/android/source/details/00000151.htm

更多相关文章

  1. Android使用Intent传输数据
  2. Android功能代码
  3. android中如何通过jni调用c,c++代码
  4. Android中通过代码修改bitmap的宽高
  5. android判断设备是否有相机的实例代码
  6. Android sqlite数据库存取图片信息
  7. Android防火墙+流量统计代码
  8. Android图片缩放、圆角处理以及倒影特效代码

随机推荐

  1. 搭建android的开发环境
  2. Android 用网络图片做帧动画
  3. 摩托罗拉何以靠Android重生
  4. Android有用代码片断(五)
  5. 记录一下八款开源 Android 游戏引擎
  6. 【Android】socket通信【客户端访问】
  7. Android消息机制浅析——基本使用
  8. 图片自适应imageView属性
  9. Android内核和驱动篇-Android内核介绍
  10. Android(安卓)Http异步请求,Callback