listview加载更多代码(listview动态添加数据)
admin 发布:2022-12-19 23:10 154
今天给各位分享listview加载更多代码的知识,其中也会对listview动态添加数据进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、如何实现listview分页加载
- 2、求android中ListView动态加载(大量)数据的详细代码啊~ 最好是一个项目~ 谢谢~
- 3、listview为什么要设置加载更多
- 4、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站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-01包含html的字体样式代码的词条[20240501更新]
- 05-01导航栏滑动代码(页面导航栏代码)[20240501更新]
- 05-01小论坛代码(论坛小程序源码)[20240501更新]
- 05-01交易平台程序代码开发(区块链交易系统源码开发)[20240501更新]
- 05-01网站浮窗代码(网站浮动窗口)[20240501更新]
- 05-01考虑下面的html代码(html代码例题)[20240501更新]
- 05-01易语言flash透明代码(易语言flash支持库)[20240501更新]
- 05-01flashcss2文字滚动代码(flash字母跳动)[20240501更新]
- 05-01您的站点页面中还没有添加cnzz统计代码获取统计代码(cnzz站长统计工具)[20240501更新]
- 05-01诗词网页源代码(web古诗词鉴赏代码)[20240501更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接