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

}

}

时间: 2024-10-10 13:29:08

android listView 滑动加载数据 该数据是服务端获取的的相关文章

android左右滑动加载分页以及动态加载数据

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; impo

Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)

最近在做ListView分页显示,其中包括图片 和文字(先下载解析文字内容,再异步加载图片)发现每次点击下一页后,文字内容加载完毕,马上向下滑动,由于这时后台在用线程池异步下载图片,我每页有20条,也就是20张图片,会导致listview滑动卡顿! 这是用户不想看到的,我参考了网易新闻和电子市场等应用,发现它们都是只加载屏幕内的图片,不现实的不加载,于是我也仿照做了一个.我是菜鸟,我承认 呵呵,虽然不见得完全和他们的一样,但是确实解决了翻页时那一刻的卡顿现象. 因为未发现网上有相关文章,希望对朋

android listview 异步加载图片并防止错位

网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertView 但没有异步操作也不会有问题. 我简单分析一下: 当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 convertView. 当 Item1 划出屏幕, Item8 进入屏幕时,这时没有为 Item8 创建新的 view 实例, Ite

Android ListView分页加载(服务端+android端)Demo

Android ListView分页加载功能 在实际开发中经常用到,是每个开发者必须掌握的内容,本Demo给出了服务端+Android端的两者的代码,并成功通过了测试. 服务端使用MyEclipse,Android端使用Eclipse. 实现效果图: 服务端一共100条数据,共分四页,每页有25条数据. 源代码: 服务端: 需要导入图中这几个jar包. 在运行Android端代码前,需要开启服务端: 下面先给出服务端的代码: 类EmpDataSource: package com.android

android listview 异步加载图片并防止错位+双缓存

网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertView 但没有异步操作也不会有问题. 我简单分析一下: 当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 convertView. 当 Item1 划出屏幕, Item8 进入屏幕时,这时没有为 Item8 创建新的 view 实例, Ite

android listview 异步加载图片并防止错位 解决办法

网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertView 但没有异步操作也不会有问题. 我简单分析一下: 当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 convertView. 当 Item1 划出屏幕, Item8 进入屏幕时,这时没有为 Item8 创建新的 view 实例, Ite

android Listview分批加载+自动加载(附源码下载)

直接上代码,代码有注释: public class TestForListviewActivity extends Activity implements OnScrollListener { private ListView mListview = null; private View mFooterView; private PaginationAdapter mAdapter; private Handler handler=new Handler(); private boolean i

又优化了一下 Android ListView 异步加载图片

写这篇文章并不是教大家怎么样用listview异步加载图片,因为这样的文章在网上已经有很多了,比如这位仁兄写的就很好: http://www.iteye.com/topic/685986 我也是因为看了这篇文章而受到了启发. 先说说这篇文章的优点把,开启线程异步加载图片,然后刷新UI显示图片,而且通过弱引用缓存网络加载的图片,节省了再次连接网络的开销. 这样做无疑是非常可取的方法,但是加载图片时仍然会感觉到轻微的卡屏现象,特别是listview里的item在进行快速滑动的时候. 我找了一下原因,

Android ListView异步加载图片乱序问题,原因分析及解决方案

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人非常头疼.比如说在ListView中加载图片,如果是同步加载图片倒还好,但是一旦使用异步加载图片那么问题就来了,这个问题我相信很多Android开发者都曾经遇到过,就是异步加载图片会出现错位乱序的情况.遇到这个问题时,不