展会信息港展会大全

android 常用到的 listview ,scrollview 等上拉刷新
来源:互联网   发布日期:2015-11-26 13:11:12   浏览:2033次  

导读:直接上代码。其实主要就是通过继承 OnScrollListener 这个接口 在 onScrollStateChanged 这个方法里面 判断listview是否到最后1条。然后加载数...

直接上代码。

其实主要就是通过继承OnScrollListener 这个接口在 onScrollStateChanged 这个方法里面 判断listview是否到最后1条。

然后加载数据,下面部分代码。

public class MainActivity extends Activity implements OnScrollListener {

private ArrayAdapteradapter;

private ListView listView;

private TextView loadText;

private ProgressBar pg;

private List list;

// ListView底部View

private View moreView;

private Handler handler = new Handler();

private int MaxNum = 22;// 设置一个最大的数据条数,超过即不再加载

// 最后可见条目的索引

private int lastVisibleIndex;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView = (ListView) findViewById(R.id.ll);

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

loadText = (TextView) moreView.findViewById(R.id.bt_load);

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

listView.addFooterView(moreView);

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

list = new ArrayList();

// 实例化SimpleAdapter

adapter=new ArrayAdapter(this, R.layout.item,R.id.tv_title, list);

listView.setAdapter(adapter);

listView.setOnScrollListener(this);

loadDate();

/**手动加载**/

//loadText.setOnClickListener(new OnClickListener() {

//@Override

//public void onClick(View v) {

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

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

//handler.postDelayed(new Runnable() {

//@Override

//public void run() {

//loadDate();

//loadText.setVisibility(View.VISIBLE);

//pg.setVisibility(View.GONE);

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

//}

//}, 2000);

//}

//});

}

/** 说明一下

* onScroll是滑动后触发的

* onScrollStateChanged是拖着滑动触发

* */

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

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

lastVisibleIndex = firstVisibleItem + visibleItemCount - 1;

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

if (totalItemCount == MaxNum + 1) {

listView.removeFooterView(moreView);

Toast.makeText(this, "数据全部加载完成", Toast.LENGTH_LONG).show();

}

}

//滑动的时候判断是否已经到了底部。

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

//OnScrollListener.SCROLL_STATE_TOUCH_SCROLL

//OnScrollListener.SCROLL_STATE_FLING

//OnScrollListener.SCROLL_STATE_IDLE

if (scrollState == OnScrollListener.SCROLL_STATE_IDLE

&& lastVisibleIndex == adapter.getCount()) {

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

pg.setVisibility(View.VISIBLE);

loadText.setVisibility(View.GONE);

handler.postDelayed(new Runnable() {

@Override

public void run() {

loadDate();

loadText.setVisibility(View.VISIBLE);

pg.setVisibility(View.GONE);

adapter.notifyDataSetChanged();

}

}, 2000);

}

}

//这里加载数据

private void loadDate(){

int count = adapter.getCount();

//if (count + 5

几个工程:

1. 上面那个简单的 上拉加载更多的例子

http://download.csdn.net/detail/kongbaidepao/6884945

2. 网上的一个 上拉加载更多下拉刷新的例子

http://download.csdn.net/detail/kongbaidepao/6884933

3. 还有1个挺完善的listview scrollviewgridview 加载更多的例子

http://download.csdn.net/detail/kongbaidepao/6884999

另外附一个开源项目,有兴趣的可以去看看呢。

https://github.com/chrisbanes/Android-PullToRefresh

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港