`

ListView学习(一) 滑动分页时底部显示进度条

阅读更多

我们在使用listview时难免会遇到分页的情况,既然是分页,那么能给用户看见分页的情况,无疑让用户在等待下一页数据的时候会有好处的,如果获取下一页时间过久的话,用户会觉得好像死机了,这样就会给用户一个不好的体验,下面我就来实现在listview分页是现实进度条,由于这个效果的要求不高,我只使用了很简单的方式来实现,高手莫笑哦!

 

1、首先便是xml文件

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

     android:id="@+id/main" android:orientation="vertical"

      android:background="@drawable/mainapp_ic_bg" android:layout_width="fill_parent"

     android:layout_height="fill_parent">

     <LinearLayout android:gravity="center_horizontal" android:layout_above="@+id/main_progessbar" android:layout_alignParentTop="true"

         android:orientation="vertical" android:id="@+id/top" android:layout_width="fill_parent"

         android:layout_height="fill_parent">

     <TextView android:text="学习" android:background="@drawable/com_ttb_1l_bg"

         android:id="@+id/main_title"

         android:layout_width="fill_parent" android:gravity="center"

         android:layout_height="wrap_content" android:textSize="18dip"

         android:textColor="@color/white" android:visibility="gone"/>

     <ListView android:id="@+id/main_listview"  android:layout_below="@+id/main_title" android:cacheColorHint="#00000000"

         android:layout_width="fill_parent"  android:layout_height="fill_parent"></ListView>

</LinearLayout>

     <LinearLayout android:gravity="center"    android:layout_alignParentBottom="true"

         android:background="@color/black" android:id="@+id/main_progessbar" android:layout_width="fill_parent"

         android:visibility="gone" android:layout_height="wrap_content" >

         <ProgressBar android:layout_width="wrap_content"

              android:layout_height="wrap_content"></ProgressBar>

         <TextView android:text="加载中..." android:layout_width="wrap_content" 

              android:paddingLeft="10dip" android:gravity="center"  android:layout_height="fill_parent"></TextView>

     </LinearLayout>

</RelativeLayout>

 

2activity

public class ListView_ProgressBar extends Activity implements OnScrollListener {

     int lastItem = 0;

     int mProgressStatus = 0;

     private Handler mHandler = new Handler();

     ProgressBar progressBar;

     MyAdapter myAdapter;

     List<String> str = new ArrayList<String>();

     int pageNo = 1;

     ListView listview;

     int totalPage = 10;

     int totalRecord = 200;

     LinearLayout main_progessbarn;

 

     private boolean isScrolling = false;

     int now = 0;

     boolean isPagination = false;

     public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         requestWindowFeature(Window.FEATURE_NO_TITLE);

         setContentView(R.layout.main);

         main_progessbarn = (LinearLayout)findViewById(R.id.main_progessbar);

         listview = (ListView) findViewById(R.id.main_listview);

         for (int i = 0; i < 15; i++) {

              str.add("条目内容" + (pageNo-1)*20+i);

         }

         myAdapter = new MyAdapter(ListView_ProgressBar.this, str);

         listview.setAdapter(myAdapter);

         listview.setOnScrollListener(this);               

     }

     public void onScroll(AbsListView v, int firstVisibleItem,

              int visibleItemCount, int totalItemCount) {

             lastItem = firstVisibleItem + visibleItemCount - 1;

             System.out.println("lastItem:" + lastItem);

     }

     public void onScrollStateChanged(AbsListView v, int state) {

         if (lastItem == str.size()-1

                   && state == OnScrollListener.SCROLL_STATE_IDLE) {

              pageNo++;

              if (pageNo <= totalPage) {

                   ccc(pageNo);

              }

         }

     }

     private void ccc(final int pageNo){

         main_progessbarn.setVisibility(View.VISIBLE);

         new Thread() {

              public void run() {

                   getStringList(pageNo);

                   mHandler.post(refreshAdapter);

              }

         }.start();

     }

     private Runnable refreshAdapter = new Runnable() {

         public void run() {

              myAdapter.notifyDataSetChanged();

              main_progessbarn.setVisibility(View.GONE);

         }

     };

     public void getStringList(int pageNo) {

         for (int i = 0; i < 10000; i++) {

              str.add("条目内容" + (pageNo-1)*20+i);

         }

}

}

 

3listview适配器

public class MyAdapter extends BaseAdapter {

     Context context;

     List<String> list;

     LayoutInflater lif;

     public MyAdapter(Context context, List<String> list,) {

         this.context = context;

         this.list = list;

     }

     public int getCount() {

         if (list != null) {

                   return list.size();

         } else {

              return 0;

         }

     }

     public Object getItem(int position) {

         return null;

     }

     public long getItemId(int position) {

         // mHandler.post(mScrollToButton);//�?�?��消息进行滚动

         return position;

     }

     public View getView(final int position, View convertView, ViewGroup parent) {

         final MyView mv;

         if (convertView == null) {

              mv = new MyView();

              lif = LayoutInflater.from(context);// 转化到context这个容器

              convertView = lif.inflate(R.layout.main_item, null);// 设置要转化的layout文件

         } else {

              mv = (MyView) convertView.getTag();

         }

         mv.tv1 = (TextView) convertView.findViewById(R.id.main_listview_item);// 取得实例

              System.out.println("条目内容" + list.get(position));

              mv.tv1.setText(list.get(position));

         if ((position % 2) == 0) {

              convertView.setBackgroundResource(R.drawable.com_list_bg_d);

         } else {

              convertView.setBackgroundResource(R.drawable.com_list_bg_s);

         }

         convertView.setTag(mv);

         return convertView;

     }

     private static class MyView {

         TextView tv1;

     }

}

 

 

  • 大小: 11.4 KB
分享到:
评论

相关推荐

    Android ListView 滑动分页

    滑动分页技术是当用户滚动到底部时,自动加载更多数据的功能,这在处理大量数据时非常实用,可以提高用户体验并节省流量。本篇文章将详细讲解如何实现Android ListView的滑动分页功能。 首先,理解滑动分页的基本...

    android ListView滑动分页加载和点击分页加载,以及复用convertView综合案例

    4. **显示加载状态**:在ListView底部添加一个进度条或者提示文字,显示加载中的状态。当数据加载完成,隐藏加载指示器,显示新加载的数据。 点击分页加载则是在用户点击某项后,加载与该项相关的更多数据。这个...

    android listview 上拉刷新,滑动底部自动增加更多

    其次,滑动到底部自动增加更多,也称为无限滚动,目的是在用户接近ListView底部时加载更多的数据,模拟无边界的效果。实现这一功能需要监听ListView的滚动事件,并判断是否达到加载新数据的条件。以下是一般实现过程...

    android listview滑动到底部加载数据

    "android listview滑动到底部加载数据"这个主题涉及到一个常见的功能需求:无限滚动或称为“上拉加载更多”。这种设计模式允许用户在滚动到ListView底部时动态加载更多的内容,从而提供更好的用户体验,避免一次性...

    滑动分页加载数据

    滑动分页加载数据是一种常见的用户界面设计技术,尤其在移动设备的应用程序中非常常见。这种技术主要用于提高用户体验,因为它允许用户浏览大量信息时无需等待整个数据集一次性加载完成,而是仅在用户滚动到页面底部...

    ListView底部加载更多demo

    在实际应用中,为了优化用户体验,我们常常需要在用户滚动到底部时动态加载更多的数据,这种功能通常被称为“无限滚动”或“下拉刷新、上拉加载”。本教程将深入探讨如何在ListView中实现“底部加载更多”的功能。 ...

    ListView 下拉刷新,上拉加载,滑动删除

    上拉加载更多功能允许用户滚动到底部时加载更多数据,以分页形式展示大量数据。实现过程如下: 1. **监听滚动事件**:可以通过ListView的`OnScrollListener`监听滚动状态,特别关注`SCROLL_STATE_IDLE`(停止滚动)...

    ListView分页

    5. 滑动监听:通常需要监听ListView的OnScrollListener,以便在用户滚动到底部时触发数据加载。 结合提供的文件"ListViewLoadDemo",这可能是一个示例代码,展示了如何在ListView中实现分页加载。通过阅读和分析这...

    Android程序开发之Listview下拉刷新上拉(滑动分页)加载更多

    2. **加载更多数据**:当检测到用户滚动到底部时,向服务器请求更多数据。 3. **添加数据到列表**:收到新数据后,将其添加到现有数据集,并调用Adapter的notifyDataSetChanged()方法通知ListView数据已更新。 4. ...

    滑动listview加载更多数据

    "滑动listview加载更多数据"这一功能,就是针对这种需求设计的,它使得用户在浏览至列表底部时能自动触发加载更多数据的机制,提升了用户体验。 1. **滑动监听事件**: ListView提供了OnScrollListener接口,用于...

    安卓进度条loadingprogress相关-实现公交站app的demo所有站点都可以看到超过一页的可以滑动。清晰的区分出来车到那一站.rar

    2. **页面滑动**:如果数据量大,分页加载时,每次滚动到新的页面底部,可能会触发新的数据请求,这时也可以利用进度条来表示加载新数据的过程。 实现这些功能,开发者可能使用了异步任务(AsyncTask)或者Retrofit...

    Android自制带刷新的ListView

    首先,下拉刷新功能允许用户通过向下滑动ListView顶部来更新列表内容,通常显示一个刷新指示器,如旋转的箭头或进度条,当数据加载完成则自动恢复到原始状态。这种交互设计让用户知道后台正在加载新数据,并提供了一...

    Android实现自定义listview上拉刷新下拉加载以及侧滑编辑、删除

    我们可以利用SwipeRefreshLayout作为容器包裹ListView,当用户在底部向上滑动时,会触发SwipeRefreshLayout的刷新动作。在监听器OnRefreshListener中,你需要实现加载更多数据的方法,通常通过网络请求或者本地数据...

    ListView的demo,拖曳加载

    在示例中,开发者可能会先初始化20条数据,然后在ListView滑动到底部时,向服务器发送请求获取额外的20条数据。这个过程通常使用异步任务(AsyncTask)或者Retrofit、OkHttp等网络库来处理,以避免阻塞主线程。获取...

    Android应用中使用ListView来分页显示刷新的内容

    SwipeRefreshLayout包含一个可以滑动的容器,当用户下拉时,它会显示一个刷新指示器,同时触发一个回调,让应用程序加载新数据。在这个回调中,可以调用`getListNews`方法获取下一页数据,然后添加到ListView的...

    Android头部停留及分页加载功能整合列表

    分页加载(Pagination)则用于优化用户体验,避免一次性加载大量数据导致的性能问题,它允许用户滚动到列表底部时动态加载更多数据。 在"Android头部停留及分页加载功能整合列表"项目中,开发者可能采用了`...

    listview下拉加载更多

    "listview下拉加载更多"的功能是为了提高用户体验,让用户能够在滚动到底部时自动加载更多数据,而无需手动翻页。这种功能通常被称为无限滚动或者下拉刷新。下面将详细介绍如何在不自定义ListView的情况下实现这一...

    仿新浪微博listview 动态加载

    - 在ListView底部添加一个“加载更多”的占位视图,当需要加载更多数据时显示,加载完毕后隐藏。 6. **优化用户体验**: - 可以使用诸如SwipeRefreshLayout这样的库实现下拉刷新功能,让用户可以轻松地刷新列表。...

    Listview下拉刷新

    与下拉刷新类似,上拉加载更多是当用户滚动到列表底部时,加载更多的数据。这个功能在大数据量的列表中尤其有用,避免一次性加载所有数据导致内存消耗过大。实现上拉加载更多通常需要以下步骤: 1. 监听ListView的...

    android listview 下拉刷新 上拉翻页 仿新浪微博客户端

    在XListView中,当用户滚动到列表底部时,会自动触发OnLoadMoreListener的回调,开发者在此回调中实现加载更多数据的逻辑。 在仿制新浪微博客户端的过程中,还需要考虑以下几点: 1. 数据分页:为了优化性能,通常...

Global site tag (gtag.js) - Google Analytics