国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Listview滑動時不加載數據 停止時加載數據

2019-12-12 03:23:00
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Listview滑動時不加載數據 停止時加載數據的具體代碼,供大家參考,具體內容如下

數據源配置(Adapter)

package com.zhengsonglan.listview_loading.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中重要的代碼如下:

//定義當前listview是否在滑動狀態private boolean scrollState=false;public void setScrollState(boolean scrollState) { this.scrollState = scrollState;}
//實體類UserEnity userEnity=lists.get(position);if (!scrollState){//如果當前不是滑動的狀態,我們填充真數據   //填充數據   viewHolder.tv_name.setText(userEnity.getName());   //設置Tag中數據為空表示數據已填充   viewHolder.tv_name.setTag(null);   //加載圖片   ImageLoader.getInstance().displayImage(img_url,viewHolder.iv_icon);   //設置tag為1表示已加載過數據   viewHolder.iv_icon.setTag("1");}else{//如果當前是滑動的狀態,我們填充假數據   viewHolder.tv_name.setText("加載中");   //將數據name保存在Tag當中   viewHolder.tv_name.setTag(userEnity.getName());   //將數據image_url保存在Tag當中   viewHolder.iv_icon.setTag(img_url);   //設置默認顯示圖片(最好是本地資源的圖片)   viewHolder.iv_icon.setImageResource(R.mipmap.ic_launcher);}

設置監聽

ok,我們在看看Activity中的代碼,主要是監聽listview的onscrolllistener方法

@Override public void onScrollStateChanged(AbsListView view, int scrollState) {  switch (scrollState){   case AbsListView.OnScrollListener.SCROLL_STATE_IDLE://停止滾動   {    //設置為停止滾動    myAdapter.setScrollState(false);    //當前屏幕中listview的子項的個數    int count = view.getChildCount();    Log.e("MainActivity",count+"");    for (int i = 0; i < count; 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加上滑動的監聽

listview.setOnScrollListener(this);

效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新龙县| 比如县| 六枝特区| 清流县| 岗巴县| 大城县| 霍城县| 和政县| 修文县| 老河口市| 渝北区| 高台县| 芦山县| 横山县| 沧源| 莎车县| 惠安县| 泸西县| 辽宁省| 南涧| 汝阳县| 三江| 喀喇沁旗| 合江县| 柏乡县| 息烽县| 周宁县| 桃江县| 三都| 临夏市| 玛曲县| 长寿区| 湖北省| 安阳市| 马边| 阳原县| 双桥区| 克拉玛依市| 合肥市| 邵阳市| 浮山县|