当前位置:首页 > 代码 > 正文

listview加载更多代码(listview动态添加数据)

admin 发布:2022-12-19 23:10 154


今天给各位分享listview加载更多代码的知识,其中也会对listview动态添加数据进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何实现listview分页加载

?xml version="1.0" encoding="utf-8"?

LinearLayout xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

Button

android:id="@+id/bt_load"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="加载更多数据" /

ProgressBar

android:id="@+id/pg"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:visibility="gone"

/

/LinearLayout

可以看到是一个按钮和一个进度条。因为只做一个演示,这里简单处理,通过设置控件的visibility,未加载时显示按钮,加载时就显示进度条。

写一个item.xml,大家应该很熟悉了。用来定义listview的每个item的视图。

?xml version="1.0" encoding="utf-8"?

LinearLayout xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

TextView

android:id="@+id/tv_title"

android:textSize="20sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

/

TextView

android:textSize="12sp"

android:id="@+id/tv_content"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

/

/LinearLayout

main.xml就不贴了,整个主界面就一个listview。

直接先看下Activity的代码,在里面实现分页效果。

package com.notice.moredate;

import java.util.ArrayList;

import java.util.HashMap;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AbsListView;

import android.widget.AbsListView.OnScrollListener;

import android.widget.Button;

import android.widget.ListView;

import android.widget.ProgressBar;

import android.widget.SimpleAdapter;

import android.widget.Toast;

public class MoreDateListActivity extends Activity implements OnScrollListener {

// ListView的Adapter

private SimpleAdapter mSimpleAdapter;

private ListView lv;

private Button bt;

private ProgressBar pg;

private ArrayListHashMapString,String list;

// ListView底部View

private View moreView;

private Handler handler;

// 设置一个最大的数据条数,超过即不再加载

private int MaxDateNum;

// 最后可见条目的索引

private int lastVisibleIndex;

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

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

MaxDateNum = 22; // 设置最大数据条数

lv = (ListView) findViewById(R.id.lv);

// 实例化底部布局

moreView = getLayoutInflater().inflate(R.layout.moredate, null);

bt = (Button) moreView.findViewById(R.id.bt_load);

pg = (ProgressBar) moreView.findViewById(R.id.pg);

handler = new Handler();

// 用map来装载数据,初始化10条数据

list = new ArrayListHashMapString,String();

for (int i = 0; i 10; i++) {

HashMapString, String map = new HashMapString, String();

map.put("ItemTitle", "第" + i + "行标题");

map.put("ItemText", "第" + i + "行内容");

list.add(map);

}

// 实例化SimpleAdapter

mSimpleAdapter = new SimpleAdapter(this, list, R.layout.item,

new String[] { "ItemTitle", "ItemText" },

new int[] { R.id.tv_title, R.id.tv_content });

// 加上底部View,注意要放在setAdapter方法前

lv.addFooterView(moreView);

lv.setAdapter(mSimpleAdapter);

// 绑定监听器

lv.setOnScrollListener(this);

bt.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

pg.setVisibility(View.VISIBLE);// 将进度条可见

bt.setVisibility(View.GONE);// 按钮不可见

handler.postDelayed(new Runnable() {

@Override

public void run() {

loadMoreDate();// 加载更多数据

bt.setVisibility(View.VISIBLE);

pg.setVisibility(View.GONE);

mSimpleAdapter.notifyDataSetChanged();// 通知listView刷新数据

}

}, 2000);

}

});

}

private void loadMoreDate() {

int count = mSimpleAdapter.getCount();

if (count + 5 MaxDateNum) {

// 每次加载5条

for (int i = count; i count + 5; i++) {

HashMapString, String map = new HashMapString, String();

map.put("ItemTitle", "新增第" + i + "行标题");

map.put("ItemText", "新增第" + i + "行内容");

list.add(map);

}

} else {

// 数据已经不足5条

for (int i = count; i MaxDateNum; i++) {

HashMapString, String map = new HashMapString, String();

map.put("ItemTitle", "新增第" + i + "行标题");

map.put("ItemText", "新增第" + i + "行内容");

list.add(map);

}

}

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

// 计算最后可见条目的索引

lastVisibleIndex = firstVisibleItem + visibleItemCount - 1;

// 所有的条目已经和最大条数相等,则移除底部的View

if (totalItemCount == MaxDateNum + 1) {

lv.removeFooterView(moreView);

Toast.makeText(this, "数据全部加载完成,没有更多数据!", Toast.LENGTH_LONG).show();

}

}

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

// 滑到底部后自动加载,判断listview已经停止滚动并且最后可视的条目等于adapter的条目

if (scrollState == OnScrollListener.SCROLL_STATE_IDLE

lastVisibleIndex == mSimpleAdapter.getCount()) {

// 当滑到底部时自动加载

// pg.setVisibility(View.VISIBLE);

// bt.setVisibility(View.GONE);

// handler.postDelayed(new Runnable() {

//

// @Override

// public void run() {

// loadMoreDate();

// bt.setVisibility(View.VISIBLE);

// pg.setVisibility(View.GONE);

// mSimpleAdapter.notifyDataSetChanged();

// }

//

// }, 2000);

}

}

}

求android中ListView动态加载(大量)数据的详细代码啊~ 最好是一个项目~ 谢谢~

你的数据类型是什么?我这里得到的是String[][]类型的数据result 全手打 可能会有错

ListView lv=(ListView)findViewById(R.id.lv)

ArrayListHashMapString,Object list = new ArrayListHashMapString,Object();

SimpleAdapter adapter = new SimpleAdapter(context,list,R.layout.xx,new String[]{"test1","test2"},new int[]{R.id.text1,R.id.text2});

for(int i=0;iresult.length;i++){HashMapString,Object map = new HashMapString,Object();

map.put("test1",result[ i ][0]);

map.put("test2",result[ i ][1]);

list.add(map);}

lv.setAdapter(adapter);

listview为什么要设置加载更多

先设一个bool变量 ,如果bool为true的话下拉加载,为falsh时上拉刷新。 在button点击时间中先判断 if(bool == true){//前面开启下拉加载 bool = falsh;//现在开启上拉刷新}else{ bool = true;}在对listview操作是判断bool选择方法就可以了

listview在下拉到底部加载更多,怎么做?

public void onScrollStateChanged(AbsListView view, int scrollState) {

view.getLastVisiblePosition() == (list.size() - 1) //到达底部

()} //自己的函数,调整adapter

adapter.notifyDataSetChanged(); //在原来的基础上加载更多

关于listview加载更多代码和listview动态添加数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/29432.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载