ListView动态加载数据模板(使用代码布局)_第1页
ListView动态加载数据模板(使用代码布局)_第2页
ListView动态加载数据模板(使用代码布局)_第3页
ListView动态加载数据模板(使用代码布局)_第4页
ListView动态加载数据模板(使用代码布局)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、对于做Android应用程序来说,ListView一定用得非常多,经常解析xml文件然后在ListView中显示,往往我们需要让它动态地加载内容,也就是不一次性地加载完成,对于手机来说,这点很重要!笔者之前也是弄的不明白,用的时候直接在网上找代码,复制粘贴,再修改一下就是自己的了,笔者的这个小Demo灵感来自于新浪或者腾讯微博手机客户端,比如第一页加载十条Item,当翻到最后一个Item的时候,会出来一个Button,当点击Button的时候就会继续加载更多的,当然如果不点,就不会加载的,节约用户流量,先看效果图OK,如果觉得满意的话就继续看下面的代码吧,笔者这里没有用到main.xml文件,

2、全部在java文件中定义的,如果理解了的话自己可以在xml文件里面写布局package com.focus.loading;import android.app.ListActivity;import android.os.Bundle;import android.os.Handler;import android.view.Gravity;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.ViewGroup.L

3、ayoutParams;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.ProgressBar;import android.widget.TextView;public cl

4、ass ListViewActivity extends ListActivity implements OnScrollListener private LinearLayout mLoadLayout;private LinearLayout mProgressLoadLayout;private ListView mListView;private ListViewAdapter mListViewAdapter = new ListViewAdapter(;private int mLastItem = 0;private int mCount = 41;private final H

5、andler mHandler = new Handler(;/ 在Handler中加载数据private final LayoutParams mLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT;int scrollState;/ 全局变量,用来记录ScrollView的滚动状态,1表示开始滚动,2表示正在滚动,0表示滚动停止int visibleItemCount;/ 当前可见页面中的Item总数

6、Overridepublic void onCreate(Bundle savedInstanceState super.onCreate(savedInstanceState;/* "加载项"布局,此布局被添加到ListView的Footer中。*/mLoadLayout = new LinearLayout(this;mLoadLayout.setMinimumHeight(30;mLoadLayout.setGravity(Gravity.CENTER;mLoadLayout.setOrientation(LinearLayout.VERTICAL;/* 当点击按钮的

7、时候显示这个View,此View使用水平方式布局,左边是一个进度条,右边是文本,默认设为不可见*/mProgressLoadLayout = new LinearLayout(this;mProgressLoadLayout.setMinimumHeight(30;mProgressLoadLayout.setGravity(Gravity.CENTER;mProgressLoadLayout.setOrientation(LinearLayout.HORIZONTAL;ProgressBar mProgressBar = new ProgressBar(this;mProgressBar.s

8、etPadding(0, 0, 15, 0;mProgressLoadLayout.addView(mProgressBar, mLayoutParams;/ 为布局添加进度条TextView mTipContent = new TextView(this;mTipContent.setText("加载中."mProgressLoadLayout.addView(mTipContent, mLayoutParams;/ 为布局添加文本mProgressLoadLayout.setVisibility(View.GONE;/ 默认设为不可见,注意View.GONE和View.

9、INVISIBLE的区别mLoadLayout.addView(mProgressLoadLayout;/ 把之前的布局以View对象添加进来final Button button = new Button(this;button.setText("加载更多"/ 添加按钮mLoadLayout.addView(button, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT;button.setOnClickListener(new OnClickListener( Overridepub

10、lic void onClick(View v if (mLastItem = mListViewAdapter.count&& scrollState = OnScrollListener.SCROLL_STATE_IDLE / 当点击时把带进度条的Layout设为可见,把Button设为不可见mProgressLoadLayout.setVisibility(View.VISIBLE;button.setVisibility(View.GONE;if (mListViewAdapter.count <= mCount mHandler.postDelayed(new

11、Runnable( Overridepublic void run( mListViewAdapter.count += 10;mListViewAdapter.notifyDataSetChanged(;mListView.setSelection(mLastItem- visibleItemCount + 1;/ 获取数据成功时把Layout设为不可见,把Button设为可见mProgressLoadLayout.setVisibility(View.GONE;button.setVisibility(View.VISIBLE;, 2000;mListView = getListView(

12、;mListView.addFooterView(mLoadLayout;setListAdapter(mListViewAdapter;mListView.setOnScrollListener(this;Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount this.visibleItemCount = visibleItemCount;mLastItem = firstVisibleItem + visibleItemCoun

13、t - 1;if (mListViewAdapter.count > mCount mListView.removeFooterView(mLoadLayout;Overridepublic void onScrollStateChanged(AbsListView view, int scrollState this.scrollState = scrollState;class ListViewAdapter extends BaseAdapter int count = 10;public int getCount( return count;public Object getItem(int position return position;public long getItemId(int position return position;public View getView(int position, View view, ViewGroup parent TextView mTextView;if (view = null mTextView = new TextView(ListViewActivity.this; e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论