NewsAdapter.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.example.myapplication;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.*;
  7. import java.util.List;
  8. public class NewsAdapter extends BaseAdapter implements AbsListView.OnScrollListener {
  9. private List<NewBean> mList;
  10. private LayoutInflater mInflater;
  11. private ImageLoader mImageLoader;
  12. private int mstart,mend;
  13. public static String[] URLS;
  14. //是否第一次启动
  15. private boolean mFirst;
  16. public NewsAdapter(Context context, List<NewBean> data, ListView listView){
  17. //构造方法
  18. mList = data;
  19. mInflater = LayoutInflater.from(context);
  20. mImageLoader = new ImageLoader(listView);
  21. URLS = new String[data.size()];
  22. for (int i = 0;i < data.size();i++){
  23. URLS[i] = data.get(i).getPicUrl();
  24. }
  25. //绑定监听事件
  26. listView.setOnScrollListener(this);
  27. //初始化值
  28. mFirst = true;
  29. }
  30. @Override
  31. public int getCount() {
  32. return mList.size();
  33. }
  34. @Override
  35. public Object getItem(int position) {
  36. return mList.get(position);
  37. }
  38. @Override
  39. public long getItemId(int position) {
  40. return position;
  41. }
  42. @Override
  43. public View getView(int position, View convertView, ViewGroup parent) {
  44. ViewHolder viewHolder = null;
  45. if(convertView == null){
  46. viewHolder = new ViewHolder();
  47. convertView = mInflater.inflate(R.layout.item_layout, null);
  48. viewHolder.newPic = convertView.findViewById(R.id.new_pic);
  49. viewHolder.newTitle = convertView.findViewById(R.id.new_title);
  50. viewHolder.newTime = convertView.findViewById(R.id.new_time);
  51. viewHolder.newDesc = convertView.findViewById(R.id.new_desc);
  52. viewHolder.newContent = convertView.findViewById(R.id.new_content);
  53. convertView.setTag(viewHolder);
  54. }else{
  55. viewHolder = (ViewHolder) convertView.getTag();
  56. }
  57. viewHolder.newPic.setImageResource(R.mipmap.ic_launcher);
  58. String url = mList.get(position).getPicUrl();
  59. viewHolder.newPic.setTag(url);
  60. //new ImageLoader().showImagerByThread(viewHolder.newPic, mList.get(position).getPicUrl());
  61. //new ImageLoader().showImageByAsyncTask(viewHolder.newPic, mList.get(position).getPicUrl());
  62. mImageLoader.showImageByAsyncTask(viewHolder.newPic, mList.get(position).getPicUrl());
  63. viewHolder.newTitle.setText(mList.get(position).getTitle());
  64. viewHolder.newTime.setText(mList.get(position).getTime());
  65. viewHolder.newDesc.setText(mList.get(position).getDesc());
  66. viewHolder.newContent.setText(mList.get(position).getContentUrl());
  67. return convertView;
  68. }
  69. @Override
  70. public void onScrollStateChanged(AbsListView view, int scrollState) {
  71. //滑动状态的时候调用
  72. if(scrollState == SCROLL_STATE_IDLE){
  73. //停止滚动的时候
  74. mImageLoader.loadImages(mstart,mend);
  75. } else{
  76. //停止任务
  77. mImageLoader.cancelAllTasks();
  78. }
  79. }
  80. @Override
  81. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  82. //滑不滑动都会调用
  83. mstart = firstVisibleItem;
  84. mend = firstVisibleItem + visibleItemCount;
  85. //第一次显示调用
  86. if(mFirst == true && visibleItemCount > 0){
  87. mImageLoader.loadImages(mstart,mend);
  88. mFirst = false;
  89. }
  90. }
  91. class ViewHolder{
  92. public TextView newTitle, newTime, newDesc, newContent;
  93. public ImageView newPic;
  94. }
  95. }