LIstview滑动时不加载图片,停止时加载!
生活随笔
收集整理的這篇文章主要介紹了
LIstview滑动时不加载图片,停止时加载!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//參照 http://blog.csdn.net/yy1300326388/article/details/45153813
public class CarWashDistanceAdapter extends BaseAdapter {private static final String TAG = "CarWashDistanceAdapter";private Context context;private MyDialog myDialog;private ArrayList<FourServiceBean> arrayList;private boolean scrollState=false;private float density = 1.5f; //定義當前listview是否在滑動狀態 public void setScrollState(boolean scrollState) {this.scrollState = scrollState;}public CarWashDistanceAdapter(Context context, ArrayList<FourServiceBean> arrayList) {this.context = context;this.arrayList=arrayList;}public void refresh( ArrayList<FourServiceBean> arrayList) {this.arrayList=arrayList;notifyDataSetChanged();}@Overridepublic int getCount() {return arrayList.size();}@Overridepublic Object getItem(int position) {return arrayList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {Hodler hodler;if (convertView == null) {hodler = new Hodler();convertView = View.inflate(context, R.layout.listview_car_wash_item, null);hodler.mImageView = (ImageView) convertView.findViewById(R.id.car_wash_item_imageview);hodler.mTelImageview = (ImageView) convertView.findViewById(R.id.car_wash_item_phone_imageview);hodler.mTitleTextView = (TextView) convertView.findViewById(R.id.car_wash_item_title_textview);hodler.mDistanceTextView = (TextView) convertView.findViewById(R.id.car_wash_item_distance_textview);hodler.mSubTextView = (TextView) convertView.findViewById(R.id.car_wash_item_subtitle_textview);hodler.relativeLayout = (RelativeLayout) convertView.findViewById(R.id.car_wash_item_relativelayout);hodler.mRatingBar = (RatingBar) convertView.findViewById(R.id.car_wash_item_ratingbar);convertView.setTag(hodler);} else {hodler = (Hodler) convertView.getTag();}hodler.mTitleTextView.setText(arrayList.get(position).getShop_name());hodler.mSubTextView.setText(arrayList.get(position).getDetail_address());if(arrayList.get(position).getDistance()/1000 <= 1){hodler.mDistanceTextView.setText((new DecimalFormat("0").format(arrayList.get(position).getDistance()) + "m"));}else {hodler.mDistanceTextView.setText((new DecimalFormat("0.00").format(arrayList.get(position).getDistance()/1000)+ "km"));}if(arrayList.get(position).getScore()!=null ) {hodler.mRatingBar.setRating(Float.valueOf(arrayList.get(position).getScore()));}final String[] sourceStrArray = arrayList.get(position).getTel_num_list().split(",");hodler.mTelImageview.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {myDialog = new MyDialog(context, R.style.MyDialog, new MyDialog.LeaveMyDialogListener() {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.mydialog_clear:myDialog.dismiss();break;}}}, Arrays.asList(sourceStrArray),myDialog);myDialog.show();}});
//這獲取的是圖片的urlString url = arrayList.get(position).getShop_pic_url();if (!scrollState){//如果當前不是滑動的狀態,我們填充真數據//加載圖片if(url!= null) {
//這是我添加圖片的方法THttpOpenHelper.newInstance().setImageBitmap(hodler.mImageView, url,(int)(100 * density), (int)(75 * density), R.drawable.icon_default1, R.drawable.icon_default1);//設置tag為1表示已加載過數據hodler.mImageView.setTag("1");}else{hodler.mImageView.setImageResource(R.drawable.icon_default1);hodler.mImageView.setTag("1");}}else{//如果當前是滑動的狀態,我們填充假數據//將數據image_url保存在Tag當中 hodler.mImageView.setTag(url);//設置默認顯示圖片(最好是本地資源的圖片) hodler.mImageView.setImageResource(R.drawable.icon_default1);}return convertView;}private class Hodler {ImageView mImageView;ImageView mTelImageview;TextView mTitleTextView;TextView mSubTextView;TextView mDistanceTextView;RelativeLayout relativeLayout;RatingBar mRatingBar;} }
public class CarWashDistanceAdapter extends BaseAdapter {private static final String TAG = "CarWashDistanceAdapter";private Context context;private MyDialog myDialog;private ArrayList<FourServiceBean> arrayList;private boolean scrollState=false;private float density = 1.5f; //定義當前listview是否在滑動狀態 public void setScrollState(boolean scrollState) {this.scrollState = scrollState;}public CarWashDistanceAdapter(Context context, ArrayList<FourServiceBean> arrayList) {this.context = context;this.arrayList=arrayList;}public void refresh( ArrayList<FourServiceBean> arrayList) {this.arrayList=arrayList;notifyDataSetChanged();}@Overridepublic int getCount() {return arrayList.size();}@Overridepublic Object getItem(int position) {return arrayList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {Hodler hodler;if (convertView == null) {hodler = new Hodler();convertView = View.inflate(context, R.layout.listview_car_wash_item, null);hodler.mImageView = (ImageView) convertView.findViewById(R.id.car_wash_item_imageview);hodler.mTelImageview = (ImageView) convertView.findViewById(R.id.car_wash_item_phone_imageview);hodler.mTitleTextView = (TextView) convertView.findViewById(R.id.car_wash_item_title_textview);hodler.mDistanceTextView = (TextView) convertView.findViewById(R.id.car_wash_item_distance_textview);hodler.mSubTextView = (TextView) convertView.findViewById(R.id.car_wash_item_subtitle_textview);hodler.relativeLayout = (RelativeLayout) convertView.findViewById(R.id.car_wash_item_relativelayout);hodler.mRatingBar = (RatingBar) convertView.findViewById(R.id.car_wash_item_ratingbar);convertView.setTag(hodler);} else {hodler = (Hodler) convertView.getTag();}hodler.mTitleTextView.setText(arrayList.get(position).getShop_name());hodler.mSubTextView.setText(arrayList.get(position).getDetail_address());if(arrayList.get(position).getDistance()/1000 <= 1){hodler.mDistanceTextView.setText((new DecimalFormat("0").format(arrayList.get(position).getDistance()) + "m"));}else {hodler.mDistanceTextView.setText((new DecimalFormat("0.00").format(arrayList.get(position).getDistance()/1000)+ "km"));}if(arrayList.get(position).getScore()!=null ) {hodler.mRatingBar.setRating(Float.valueOf(arrayList.get(position).getScore()));}final String[] sourceStrArray = arrayList.get(position).getTel_num_list().split(",");hodler.mTelImageview.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {myDialog = new MyDialog(context, R.style.MyDialog, new MyDialog.LeaveMyDialogListener() {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.mydialog_clear:myDialog.dismiss();break;}}}, Arrays.asList(sourceStrArray),myDialog);myDialog.show();}});
//這獲取的是圖片的urlString url = arrayList.get(position).getShop_pic_url();if (!scrollState){//如果當前不是滑動的狀態,我們填充真數據//加載圖片if(url!= null) {
//這是我添加圖片的方法THttpOpenHelper.newInstance().setImageBitmap(hodler.mImageView, url,(int)(100 * density), (int)(75 * density), R.drawable.icon_default1, R.drawable.icon_default1);//設置tag為1表示已加載過數據hodler.mImageView.setTag("1");}else{hodler.mImageView.setImageResource(R.drawable.icon_default1);hodler.mImageView.setTag("1");}}else{//如果當前是滑動的狀態,我們填充假數據//將數據image_url保存在Tag當中 hodler.mImageView.setTag(url);//設置默認顯示圖片(最好是本地資源的圖片) hodler.mImageView.setImageResource(R.drawable.icon_default1);}return convertView;}private class Hodler {ImageView mImageView;ImageView mTelImageview;TextView mTitleTextView;TextView mSubTextView;TextView mDistanceTextView;RelativeLayout relativeLayout;RatingBar mRatingBar;} }
以上是Adapter中的代碼:其中重要的就是
//定義當前listview是否在滑動狀態public void setScrollState(boolean scrollState) {this.scrollState = scrollState;}還有這段是給imageview賦值的操作
//這獲取的是圖片的urlString url = arrayList.get(position).getShop_pic_url();if (!scrollState){//如果當前不是滑動的狀態,我們填充真數據//加載圖片if(url!= null) {//這是我添加圖片的方法THttpOpenHelper.newInstance().setImageBitmap(hodler.mImageView, url,(int)(100 * density), (int)(75 * density), R.drawable.icon_default1, R.drawable.icon_default1);//設置tag為1表示已加載過數據hodler.mImageView.setTag("1");}else{hodler.mImageView.setImageResource(R.drawable.icon_default1);hodler.mImageView.setTag("1");}}else{//如果當前是滑動的狀態,我們填充假數據//將數據image_url保存在Tag當中 hodler.mImageView.setTag(url);//設置默認顯示圖片(最好是本地資源的圖片) hodler.mImageView.setImageResource(R.drawable.icon_default1);}最后在Activity中添加
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {switch (scrollState){//停止滾動case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:{//設置為停止滾動carWashDistanceAdapter.setScrollState(false);//當前屏幕中listview的子項的個數int count = view.getChildCount();for (int i = 0; i < count; i++) {//獲取到item的圖片顯示的Imageview控件ImageView iv_show= (ImageView) view.getChildAt(i).findViewById(R.id.car_wash_item_imageview);if (!iv_show.getTag().equals("1")){//如果等于1說明圖片資源已加載過,不等于說明沒有去getTag()的圖片url//直接從Tag中取出我們存儲的數據image——urlString image_url = iv_show.getTag().toString();if (image_url != null) {//這個判斷是防止圖片的url是否為空,為空的話給默認圖片。THttpOpenHelper.newInstance().setImageBitmap(iv_show, image_url, R.drawable.icon_default1, R.drawable.icon_default1);//設置為已加載過數據iv_show.setTag("1");} else {iv_show.setBackgroundResource(R.drawable.icon_default1);iv_show.setTag("1");}}}break;}//滾動做出了拋的動作case AbsListView.OnScrollListener.SCROLL_STATE_FLING:{//設置為正在滾動carWashDistanceAdapter.setScrollState(true);break;}//正在滾動case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:{//設置為正在滾動carWashDistanceAdapter.setScrollState(true);break;}}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {}});?
轉載于:https://www.cnblogs.com/niupi/p/6542522.html
總結
以上是生活随笔為你收集整理的LIstview滑动时不加载图片,停止时加载!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 031 广播变量与累加器
- 下一篇: 关于新博客的通知