Android ListView动态更新数据

  次阅读 作者:智能小宝 来源:互联网 2015-11-25 22:39 我要评论(0)

Android ListView就是可以显示一行行Item的控件,有时候数据非常多,通常需要分页显示,但为了减少用户的输入,我们可以动态更新ListView,把下一页要显示的数据的添加到当前ListView中。

先看看效果:

Android-ListView

需要注意的是程序在什么时候去更新数据,listVIew的setOnScrollListener监听是否滚到了最后一条记录。

取到的数据加到list中,最后记得调用adapter的notifyDataSetChanged,通知listview改变。

主文件:

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.AsyncTask;

import android.os.Bundle;

import android.widget.AbsListView;

import android.widget.AbsListView.OnScrollListener;

import android.widget.ListView;

import android.widget.Toast;

public class ListViewActivity extends Activity {

private ListView listView;

// 定义适配器

private ListItemAdapter listadpter;

// 定义每一页显示行数

private int VIEW_COUNT = 20;

// 定义的页数

private int index = 0;

// 当前页

private int currentPage = 1;

// 所以数据的条数

private int totalCount;

// 每次取的数据,只要最后一次可能不一样。

private int maxResult;

// 泛型集合ArrayList

private ArrayList<STUDENTS> arrayList = new ArrayList<STUDENTS>();

// 数据操作的dao类

StudentsDAO dao = new StudentsDAO(ListViewActivity.this);

// 实体bean

Students students = new Students();

// 标记:上次的ID

private boolean isUpdating = false;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// 初始化界面

initView();

// 插入100条记录。

dao.insert();

totalCount = dao.getCount();

maxResult = getMaxResult();

// 调用dao里面的selectAll()方法

arrayList = dao.getAllItems(index, maxResult);

// 实例化适配器

System.out.println("arrlist-->" + arrayList.size());

listadpter = new ListItemAdapter(ListViewActivity.this, arrayList);

// 填充适配器

listView.setAdapter(listadpter);

listView.setOnScrollListener(new OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

if (firstVisibleItem + visibleItemCount == totalItemCount

&& !isUpdating) {

if (totalItemCount < totalCount) { // 防止最后一次取数据进入死循环。

Toast.makeText(ListViewActivity.this,

"正在取第" + (++currentPage) + "的数据",

Toast.LENGTH_LONG).show();

AsyncUpdateDatasTask asyncUpdateWeiBoDatasTask = new AsyncUpdateDatasTask();

asyncUpdateWeiBoDatasTask.execute();

}

System.out.println("begin update-------------");

}

}

});

}

// 初始化界面方法

private void initView() {

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...