android listView 滑动载入数据 该数据是服务端获取的
package com.sunway.works.applycash;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.sunway.works.R;
import com.sunway.works.applycash.ApplyCashListActivity;
import com.sunway.works.cost.apply.EditExpenseActivity;
import com.sunway.works.cost.apply.ExpenseAuditActivity;
import com.sunway.works.entitys.ApplyCashEntity;
import com.sunway.works.entitys.IousEntity;
import com.sunway.works.network.HttpService;
import com.sunway.works.network.HttpServiceImpl;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.Service;
import android.app.ActionBar.LayoutParams;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.view.WindowManager;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class EditOneCashActivity extends Activity implements
OnScrollListener {
private ListView listView;
private Context context;
private View top_title;
private TextView tvtitle;
private PopupWindow popupWindow;
private View view;
private View bar1;
private View bar2;
private Spinner sp_depart;
private EditText ed_iounnub;
private EditText ed_purpose;
private EditText ed_date_from;
private EditText ed_date_over;
private Button btn_date_from;
private Button btn_date_over;
private EditText ed_iousum;
private Spinner sp_checkstate;
private EditText ed_borrower;
private Button btn_query;
private Handler handler;
private static final int DATE_DIALOG_ID = 1;
private static final int SHOW_DATAPICK = 0;
private int mYear;
private int mMonth;
private int mDay;
private DeleteCashListAdapter adapter;
private List<ApplyCashEntity> listdata = new ArrayList<ApplyCashEntity>();
private InputMethodManager imm;
private Button btn_left;
private Button btn_right;
private List<ApplyCashEntity> loadDatas; // 载入数据
// private ChooseCheckmanAdapter adapters; //适配器
private LinearLayout loadingLayout;// 底部载入布局
private Map<Integer, Boolean> isCheckedMap = new HashMap<Integer, Boolean>();;
private boolean over;// 推断数据是否已所有载入
private Thread mThread;// 载入线程
private int unb = 1;
// 设置布局显示属性
private android.widget.LinearLayout.LayoutParams mLayoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
// 设置布局显示目标最大化属性
private android.widget.LinearLayout.LayoutParams FFlayoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT);
private ProgressBar progressBar;
private PopupWindow window;
private Intent intent;
private ListView list2;
Handler mhandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:// 推断是否数据已所有载入
if (!over) {
adapter.notifyDataSetChanged();
} else {
listView.removeFooterView(loadingLayout);
Toast.makeText(context, "数据载入完成", Toast.LENGTH_SHORT)
.show();
}
break;
case 2:
adapter.notifyDataSetChanged();
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_data_list);
context = getApplicationContext();
handler = new Handler();
// 初始化底部载入视图
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.HORIZONTAL);
progressBar = new ProgressBar(context);
progressBar.setPadding(0, 0, 15, 0);
layout.addView(progressBar, mLayoutParams);
TextView textView = new TextView(context);
textView.setText("载入中...");
textView.setGravity(Gravity.CENTER_VERTICAL);
layout.addView(textView, FFlayoutParams);
loadingLayout = new LinearLayout(context);
loadingLayout.addView(layout, mLayoutParams);
loadingLayout.setGravity(Gravity.CENTER);
// 初始化ListView并设定事件
initView();
getListener();
}
private void getListener() {
btn_left.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
}
private void initView() {
// TODO Auto-generated method stub
top_title = this.findViewById(R.id.top_title);
tvtitle = (TextView) top_title.findViewById(R.id.tvtitle);
btn_left = (Button) top_title.findViewById(R.id.btn_title_left);
btn_right = (Button) top_title.findViewById(R.id.btn_title_right);
listView = (ListView) findViewById(R.id.data_enterlist);
listView.addFooterView(loadingLayout);
// listView.addFooterView()方法一定要在其setadapter()方法之前使用。不然报错
adapter = new DeleteCashListAdapter(EditOneCashActivity.this,
listdata, true);
listView.setAdapter(adapter);
listView.setOnScrollListener(EditOneCashActivity.this);
over = false;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem + visibleItemCount == totalItemCount) {
if (mThread == null || !mThread.isAlive()) {
mThread = new Thread() {
public void run() {
//从网上读取要获得的数据 这是我自己的读取server的数据,个人因须要自己写自己的联网读取数据
HttpService service = new HttpServiceImpl();
String i = (10 * (unb - 1) + 1) + ""; // i 是下标,决定从哪一条数据開始读,10代表每一次读取数据的条数
loadDatas = service.getApplyCashList(param1, i);
// 假设载入数据不为空,则将载入得到的数据加入到已有的mData数据中.否则数据载入全然
if (loadDatas != null && loadDatas.size() > 0) {
listdata.addAll(loadDatas);
loadDatas.clear();
} else {
unb = unb - 1;
over = true;
}
unb++;
mhandler.sendEmptyMessage(1);//更新UI
};
};
mThread.start();
}
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
}
android listView 滑动载入数据 该数据是服务端获取的的更多相关文章
- Android ListView分页载入(服务端+android端)Demo
Android ListView分页载入功能 在实际开发中经经常使用到,是每一个开发人员必须掌握的内容,本Demo给出了服务端+Android端的两者的代码,并成功通过了測试. 服务端使用MyEcli ...
- Android ListView滑动过程中图片显示重复错乱闪烁问题解决
最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...
- Android从服务端获取json解析显示在客户端上面
Android从服务端获取json解析显示在客户端上面 百度经验:jingyan.baidu.com 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Jso ...
- post数据过大到服务端,接收不到的问题
在页面把datagrid上的数据post到服务端,解析提供导出.datagrid的数据大概有1w. 结果能post过去,但在服务端接收的数据显示null.但是如果post6000条左右就没问题. 经过 ...
- Java通过URL 从web服务端获取数据
1.Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据 package Demo.Test; import java.io.ByteArrayOut ...
- 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据
这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...
- Android实时获得经纬度,发送给c++服务端
Android 客户端: package com.example.admin.gpsget; import android.Manifest; import android.content.Conte ...
- 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表
1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...
- Android ListView分页,动态添加数据
1.ListView分页的实现,重点在于实现OnScrollListener接口,判断滑动到最后一项时,是否还有数据可以加载, 我们可以利用listView.addFootView(View v)方法 ...
随机推荐
- 菜鸟之路——机器学习之Kmeans聚类个人理解及Python实现
一些概念 相关系数:衡量两组数据相关性 决定系数:(R2值)大概意思就是这个回归方程能解释百分之多少的真实值. Kmeans聚类大致就是选择K个中心点.不断遍历更新中心点的位置.离哪个中心点近就属于哪 ...
- BZOJ 2752:[HAOI2012]高速公路(road)(线段树)
[HAOI2012]高速公路(road) Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y ...
- P2165 [AHOI2009]飞行棋
题目描述 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. 输入输出格式 输入格式: 第一行为 ...
- display:table布局总结
1. table布局方式 2. table布局实际应用 效果: 代码: <!DOCTYPE html> <html lang="en"> <head& ...
- 5-Dalvik垃圾收集机制Cocurrent GC
Dalivik垃圾回收收机制Cocurrent GC简介和学习计划 导语: 在C/C++中,开发者需要手动地管理在堆中分配的内存,但是这往往导致很多问题. 1. 内存分配之后忘记释放,造成内存泄漏. ...
- g2o安装
1.安装依赖项 sudo apt-get install libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake 2.安装依赖项 libqglvi ...
- Android jni 编程入门
本文将介绍如何使用eclipse和ndk-build来编写一个基于Android4.4版本的包含有.so动态库的安卓程序. 前提是已经安装和配置好了诸如SDK,NDK等编译环境.下面开始编程! 1 程 ...
- MYSQL 存储过程 多表更新异常捕捉和异常处理方式
今天在做MYSQL 存储过程 多表更新的功能 多表更新时候注意事项 1.首先是确保多表更新能够一次执行,途中没有哪个表的sql语句错误 2.上线后修改表结构及字段,请注意检查是否影响mysql 过 ...
- [HNOI2012]矿场搭建(tarjan求点双)
题目 Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无 ...
- linux之tr
通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您也可以用它来除去重复 ...