1.mainActivity

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:orientation="vertical"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context="mydemo.mycom.demo2.Home"> <LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_home_to_login"
android:text="@string/btn_to_register"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_exit"
android:text="@string/btn_to_exit"/>
</LinearLayout> <ListView
android:id="@+id/lv"
android:layout_width="fill_parent"
android:layout_height="match_parent"></ListView> </LinearLayout>

2.ListView的itemActivity

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:orientation="horizontal"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context="mydemo.mycom.demo2.Home"> <TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:textColor="#FF172366"
android:padding="5dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:padding="5dp"
android:textColor="#FF870918"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/tv_password"
android:layout_width="wrap_content"
android:padding="5dp"
android:layout_height="wrap_content" /> </LinearLayout>

3.ListView footerActivity

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="mydemo.mycom.demo2.Footer"> <ProgressBar
android:layout_width="50dp"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyle"
/>
<TextView android:text="@string/load_text"
android:textSize="20sp"
android:gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> </LinearLayout>

4.MainActivity.java

package mydemo.mycom.demo2;

import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import java.util.List; import mydemo.mycom.demo2.dao.UserDao;
import mydemo.mycom.demo2.entity.UserInfo;
import mydemo.mycom.demo2.service.LoginService; public class Home extends ActionBarActivity implements View.OnClickListener { private ListView lv;
private Button btn_home_to_login;
private Button btn_exit;
private List<UserInfo> list;
// 设置一个最大的数据条数,超过即不再加载
private int pageSize=10; //每次获取多少条数据
// 最后可见条目的索引
private int pages;//总共有多少页
private boolean loadfinished = true;
private MyAdapter myAdapter;
private View footer; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home); btn_home_to_login = (Button)findViewById(R.id.btn_home_to_login);
btn_exit = (Button)findViewById(R.id.btn_exit);
lv = (ListView)findViewById(R.id.lv);
btn_home_to_login.setOnClickListener(this);
btn_exit.setOnClickListener(this); footer = getLayoutInflater().inflate(R.layout.activity_footer,null); UserDao dao = new UserDao(this);
list = dao.getUserInfo(1,10); int total = dao.getTotal(); System.out.println(total+"==================================="); pages = total%pageSize==0 ? total/pageSize : total/pageSize+1; lv.setOnScrollListener(new MyOnScrollListener()); myAdapter = new MyAdapter();
//添加页脚(放在ListView最后)
lv.addFooterView(footer);
lv.setAdapter(myAdapter);
lv.removeFooterView(footer); lv.setOnItemClickListener(new MyItemClickListener()); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_home, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
} @Override
public void onClick(View view) {
switch(view.getId())
{
case R.id.btn_home_to_login:
Intent intent = new Intent();
intent.setClass(Home.this,Register.class);
startActivity(intent);
break;
case R.id.btn_exit:
//清除登录数据
LoginService.removeLoginInfo(this);
Toast.makeText(this,"退出成功",Toast.LENGTH_SHORT).show(); Intent toLogin = new Intent();
toLogin.setClass(Home.this,MainActivity.class);
startActivity(toLogin);
break;
}
} public class MyAdapter extends BaseAdapter
{
public int getCount() {
return list.size();
} @Override
public Object getItem(int i) {
return null;
} @Override
public long getItemId(int i) {
return 0;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) { UserInfo user = list.get(i); View itemview = View.inflate(Home.this,R.layout.activity_item,null); TextView tv_id = (TextView)itemview.findViewById(R.id.tv_id);
TextView tv_username = (TextView)itemview.findViewById(R.id.tv_username);
TextView tv_password = (TextView)itemview.findViewById(R.id.tv_password); tv_id.setText(user.getId()+"");
tv_username.setText(user.getUsername());
tv_password.setText(user.getPassword());
return itemview;
}
} public class MyItemClickListener implements AdapterView.OnItemClickListener
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ListView lView = (ListView)lv;
TextView tv_id = (TextView)view.findViewById(R.id.tv_id);
TextView tv_username = (TextView)view.findViewById(R.id.tv_username);
TextView tv_password = (TextView)view.findViewById(R.id.tv_password);
String id = tv_id.getText().toString();
String username = tv_username.getText().toString();
String password = tv_password.getText().toString();
Toast.makeText(getApplicationContext(), id+","+username, Toast.LENGTH_SHORT).show();
//不同的activity之间的传值
Intent intent = new Intent();
intent.putExtra("username",username);
intent.putExtra("password",password);
intent.putExtra("id",id);
intent.setClass(Home.this,Edit.class);
startActivity(intent);
}
} public class MyOnScrollListener implements AbsListView.OnScrollListener
{
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState) { } @Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int lastItemIndex = lv.getLastVisiblePosition(); //获取当前屏幕最后的Item的id
System.out.println("====lastItemIndex:"+lastItemIndex);
System.out.println("====totalItemCount:"+totalItemCount);
if(lastItemIndex>0&&(lastItemIndex+1)==totalItemCount) //达到数据的最后一条记录
{
//当前页
int currentpage = totalItemCount%pageSize==0 ? totalItemCount /pageSize :totalItemCount /pageSize+1;
final int nextpage = currentpage +1; //下一页
System.out.println("================currentpage:"+currentpage);
System.out.println("================nextpage:"+nextpage);
if(nextpage<=pages && loadfinished)
{
loadfinished = false;
lv.addFooterView(footer);
new Thread(new Runnable() {
@Override
public void run() {
try{
Thread.sleep(3000);
}
catch (Exception e)
{ }
UserDao dao = new UserDao(Home.this); List<UserInfo> result = dao.getUserInfo(nextpage,pageSize);
handler.sendMessage(handler.obtainMessage(100,result));
}
}).start();
}
}
} Handler handler = new Handler() { public void handleMessage(Message msg)
{
list.addAll((List<UserInfo>)msg.obj);
//告诉ListView数据已经发生改变,要求ListView更新界面显示
myAdapter.notifyDataSetChanged();
if(lv.getFooterViewsCount()>0)
{
lv.removeFooterView(footer);
}
loadfinished = true;
; } };
} }

5.DAO.java

public List<UserInfo> getUserInfo(int pageIndex,int pageSize)
{
SQLiteDatabase db = helper.getWritableDatabase();
List<UserInfo> list = new ArrayList<UserInfo>(); String sql = "select * from user order by id asc limit "+(pageIndex-1)*pageSize+","+pageSize;
System.out.println("sql=======:"+sql+",pageIndex:"+pageIndex); Cursor cursor = db.rawQuery("select * from user order by id asc limit ?,?",new String[]{((pageIndex-1)*pageSize)+"",pageSize+""});
while(cursor.moveToNext())
{
int id = cursor.getInt(cursor.getColumnIndex("id"));
String username = cursor.getString(cursor.getColumnIndex("username"));
String password = cursor.getString(cursor.getColumnIndex("password")); UserInfo userInfo = new UserInfo(id,username,password);
list.add(userInfo);
}
cursor.close();
db.close();
return list; }

5.Entity.java

package mydemo.mycom.demo2.entity;

public class UserInfo {
private int id;
private String username;
private String password; public UserInfo()
{ } public UserInfo(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

android ListView 分页加载数据的更多相关文章

  1. Android中ListView分页加载数据

    public class MainActivity extends Activity { private ListView listView=null; //listview的数据填充器 privat ...

  2. 【Android进阶】Listview分页加载数据的实现

    Listview分页加载数据的实现 public class MainActivity extends Activity { protected static final int SUCCESS_GE ...

  3. Android ListView分页加载时图片显示问题

    场景:Android ListView需要分页加载,每个item中会有图片,图片又是从网络下载的. 问题:在滑动加载下一页时,上一页的图片明明已经下载完成了,但是无法显示出来. Bug重现: 1,加载 ...

  4. listView 分页加载数据

    Android应用 开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过分页 的形式来展示数据,个人觉得这样会有 ...

  5. Android GridView 分页加载数据

    android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: package cn.anycall.ju; import java.util.ArrayList; import java ...

  6. Android之分页加载数据

    基本的原理和我的上一篇随笔“Android之下拉刷新ListView”差不多,代码里面有注释,这里就不废话了,直接上代码. 自定义的分页显示ListView——PagedListView.java代码 ...

  7. Android ListView异步加载数据

    1.主Activity public class MainActivity extends Activity { private ListView listView; private ArrayLis ...

  8. java攻城狮之路(Android篇)--widget_webview_metadata_popupwindow_tabhost_分页加载数据_菜单

    一.widget:桌面小控件1 写一个类extends AppWidgetProvider 2 在清单文件件中注册: <receiver android:name=".ExampleA ...

  9. 实现Android ListView 自动加载更多内容

    研究了几个小时终于实现了Android ListView 自动加载的效果. 说说我是怎样实现的.分享给大家. 1.给ListView增加一个FooterView,调用addFooterView(foo ...

随机推荐

  1. 如何利用Hadoop存储小文件

    **************************************************************************************************** ...

  2. c3算法详解

    c3 算法求某一类在多继承中的继承顺序:类的mro == [类] + [父类的继承顺序] + [父类2的继承顺序]如果从左到右的第一个类在后面的顺序中出现,那么就提取出来到mro顺序中[ABCD] + ...

  3. jquery stop()、callback、鏈接

    stop(stopAll,goToEnd) stop適用於所有的效果,包括顯示隱藏.滑動.淡入淡出和動畫. stopAll默認值為false,清除當前動畫,可以向後執行下一動畫調用,黨改為true,清 ...

  4. BZOJ3175[Tjoi2013]攻击装置——二分图最大独立集

    题目描述 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1),(x+1,y-2),(x+2,y- ...

  5. BZOJ4502串——AC自动机(fail树)

    题目描述 兔子们在玩字符串的游戏.首先,它们拿出了一个字符串集合S,然后它们定义一个字 符串为“好”的,当且仅当它可以被分成非空的两段,其中每一段都是字符串集合S中某个字符串的前缀. 比如对于字符串集 ...

  6. Pairs Forming LCM LightOJ - 1236 (算术基本定理)

    题意: 就是求1-n中有多少对i 和 j 的最小公倍数为n  (i <= j) 解析: 而这题,我们假设( a , b ) = n ,那么: n=pk11pk22⋯pkss, a=pd11pd2 ...

  7. bzoj2142: 礼物

    2142: 礼物 Description 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E心目中的重要性不同,在小E心中分量越重的人,收到的礼物会 ...

  8. 【杂题1】USACO 2018 Open Contest-练习

    https://www.xoj.red/contests/show/1231 下面会写一些题目的解析什么的,当然不会粘贴题目只是简单提一下 (部分题目简单的题目就不概括了) 其实难度应该前面比较低. ...

  9. 洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 解题报告

    P1337 [JSOI2004]平衡点 / 吊打XXX 题目描述 有 \(n\) 个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.\(X\)处就是公共的绳结.假设 ...

  10. 洛谷 P2887 [USACO07NOV]防晒霜Sunscreen 解题报告

    P2887 [USACO07NOV]防晒霜Sunscreen 题目描述 To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2 ...