Android ListView 根据滑动状态进行加载数据 滑动停止进行加载数据
来源:互联网 发布:上海矩阵影视制作公司 编辑:程序博客网 时间:2024/05/29 19:13
package com.demo.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import com.zhengsonglan.listview_loading.R;import com.zhengsonglan.listview_loading.entity.UserEnity;import java.util.List;/** * */public class MyAdapter extends BaseAdapter { Context context; LayoutInflater inflater; List<UserEnity> lists; private boolean scrollState=false; public void setScrollState(boolean scrollState) { this.scrollState = scrollState; } public MyAdapter(Context context, List<UserEnity> lists) { this.context=context; this.inflater=LayoutInflater.from(context); this.lists=lists; } @Override public int getCount() { return lists!=null?lists.size():0; } @Override public Object getItem(int position) { return lists.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView=inflater.inflate(R.layout.main_item,null,true); viewHolder=new ViewHolder(); viewHolder.iv_icon= (ImageView) convertView.findViewById(R.id.main_item_iv_icon); viewHolder.tv_name= (TextView) convertView.findViewById(R.id.main_item_tv_name); convertView.setTag(viewHolder); } else { viewHolder= (ViewHolder) convertView.getTag(); } UserEnity userEnity=lists.get(position); String img_url=userEnity.getIcon(); if (!scrollState){ viewHolder.tv_name.setText(userEnity.getName()); viewHolder.tv_name.setTag(null); ImageLoader.getInstance().displayImage(img_url,viewHolder.iv_icon); viewHolder.iv_icon.setTag("1"); }else{ viewHolder.tv_name.setText("加载中"); viewHolder.tv_name.setTag(userEnity.getName()); viewHolder.iv_icon.setTag(img_url); viewHolder.iv_icon.setImageResource(R.mipmap.ic_launcher); } return convertView; } static class ViewHolder{ TextView tv_name; ImageView iv_icon; }}
Adapter 里面关键部分如下:
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState){ case AbsListView.OnScrollListener.SCROLL_STATE_IDLE://停止滚动 { //设置为停止滚动 myAdapter.setScrollState(false); //当前屏幕中listview的子项的个数 //当前屏幕中listview的子项的个数 int count = view.getChildCount();//view.getChildAt int firstVisiblePosition=view.getFirstVisiblePosition();//view.getItemIdAtPosition int lastVisiblePosition=view.getLastVisiblePosition();//view.getItemIdAtPosition MyLog.e("onScrollStateChanged","VideoOnScrollListener.onScrollStateChanged " + "count = "+count +";firstVisiblePosition = "+firstVisiblePosition +";lastVisiblePosition = "+lastVisiblePosition); for (int i = 0; i < count; i++) {// for (int i = firstVisiblePosition; i < lastVisiblePosition; i++) { //获取到item的name TextView tv_name = (TextView) view.getChildAt(i).findViewById(R.id.main_item_tv_name); //获取到item的头像 ImageView iv_show= (ImageView) view.getChildAt(i).findViewById(R.id.main_item_iv_icon); if (tv_name.getTag() != null) { //非null说明需要加载数据 tv_name.setText(tv_name.getTag().toString());//直接从Tag中取出我们存储的数据name并且赋值 tv_name.setTag(null);//设置为已加载过数据 } if (!iv_show.getTag().equals("1")){//!="1"说明需要加载数据 String image_url=iv_show.getTag().toString();//直接从Tag中取出我们存储的数据image——url ImageLoader.getInstance().displayImage(image_url, iv_show);//显示图片 iv_show.setTag("1");//设置为已加载过数据 } } break; } case AbsListView.OnScrollListener.SCROLL_STATE_FLING://滚动做出了抛的动作 { //设置为正在滚动 myAdapter.setScrollState(true); break; } case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL://正在滚动 { //设置为正在滚动 myAdapter.setScrollState(true); break; } } }
还有这个
listview.setOnScrollListener(this);
阅读全文
0 0
- Android ListView 根据滑动状态进行加载数据 滑动停止进行加载数据
- Android【 ListView】滑动数据加载
- android listView滑动加载数据
- android ListView 滑动到最底部并且停止滑动时候加载数据
- android listview滑动到底部加载数据
- listView滑动加载数据代码
- ListView的优化(滑动停止才加载数据,首次启动预加载)
- listview 滑动不加载,停止加载问题
- Android ListView滑动加载
- Android listView 滑动加载
- android 滑动加载listview
- ListView滑动分页,并加载部分数据
- ListView滑动到底部加载数据
- Listview滑动时不加载数据,停下来时加载数据
- JQUERY 滑动加载数据
- 滑动加载更多数据
- Android Listview滑动时不加载数据,停下来时加载数据,让App更优
- Android Listview滑动时不加载数据,停下来时加载数据,让App更优
- Servlet 生命周期
- 学习Spring必学的Java基础知识(6)----ThreadLocal
- Linux下防御DDOS攻击的操作梳理
- 1050. 螺旋矩阵
- 程序员如何规划自己的职业生涯
- Android ListView 根据滑动状态进行加载数据 滑动停止进行加载数据
- struts2的工作流程
- 自动化部署job
- MC9S12GRM
- C++技巧之断言Assert
- 使用Visual Studio 命令编译 sqlite3
- Oracle中多表连接查询
- 怎么看单片机编译的程序大小?
- 仿csdn下载模块的功能,权限的代码解析