软件编程
位置:首页>> 软件编程>> Android编程>> PullToRefreshListView实现多条目加载上拉刷新和下拉加载

PullToRefreshListView实现多条目加载上拉刷新和下拉加载

作者:dp666666  发布时间:2022-07-21 02:26:01 

标签:PullToRefreshListView,下拉加载,上拉刷新

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

XML布局

主页面main布局


<com.handmark.pulltorefresh.library.PullToRefreshListView
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:id="@+id/pull"
 >
</com.handmark.pulltorefresh.library.PullToRefreshListView>

pulllist布局


<ImageView
 android:layout_width="120dp"
 android:layout_height="100dp"
 android:id="@+id/iv"
 />
<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/tv"
 />

java代码

App页面


package com.example.duanpengpenglx20171108;

import android.app.Application;

import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;

/**
* Created by 朋 on 2017/11/8.
*/

public class App extends Application {
 @Override
 public void onCreate() {
   super.onCreate();
   ImageLoaderConfiguration config = new ImageLoaderConfiguration
       .Builder(this)
       .memoryCacheExtraOptions(480,800)
       .threadPoolSize(5)
       .threadPriority(Thread.NORM_PRIORITY - 2)
       .denyCacheImageMultipleSizesInMemory()
       .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通过自己的内存缓存实现
       .memoryCacheSize(2 * 1024 * 1024)
       .tasksProcessingOrder(QueueProcessingType.LIFO)
       .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
       .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间
       .writeDebugLogs() // Remove for release app
       .build();//开始构建
//初始化imageloader;
   ImageLoader.getInstance().init(config);
 }
}

MainActivity页面


public class MainActivity extends AppCompatActivity {

List<Jbean.DataBean> arr = new ArrayList();
 private View view;
 private ListView lv;
 private Adapter adapter;
 int i = 0;
 private PullToRefreshListView pull;
 private Adapter adapter1;

@Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   pull = (PullToRefreshListView) findViewById(R.id.pull);
   pull.setMode(PullToRefreshBase.Mode.BOTH);
   ListView lv = pull.getRefreshableView();
   adapter1 = new Adapter();
   lv.setAdapter(adapter1);

new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
   pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
     @Override
     //上拉
     public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
       arr.clear();
       i = 0;
       new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + i);
     }
     @Override
     //下拉加载20条
     public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
       i = i + 20;new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + i);

}
   });
 }
 class MyAsyncTask extends AsyncTask<String, Void, String> {

@Override
   protected String doInBackground(String... params) {
     String string = "";
     StringBuffer stringBuffer = new StringBuffer();
     try {
       URL url = new URL(params[0]);
       URLConnection urlConnection = url.openConnection();
       InputStream inputStream = urlConnection.getInputStream();
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
       while ((string = bufferedReader.readLine()) != null) {
         stringBuffer.append(string);
       }
     } catch (Exception e) {
       e.printStackTrace();
     }
     return stringBuffer.toString();
   }

@Override
   protected void onPostExecute(String s) {
     super.onPostExecute(s);
     Jbean fragone_bean = new Gson().fromJson(s, Jbean.class);
     List<Jbean.DataBean> data = fragone_bean.getData();
     arr.addAll(data);
     adapter1.notifyDataSetChanged();
     pull.onRefreshComplete();
   }
 }

class Adapter extends BaseAdapter {

@Override
   public int getCount() {
     return arr.size();
   }

@Override
   public Object getItem(int position) {
     return arr.get(position);
   }

@Override
   public long getItemId(int position) {
     return position;
   }

@Override
   public View getView(int position, View convertView, ViewGroup parent) {
     Sj sj = new Sj();
     Jbean.DataBean dataBean = arr.get(position);
     if (convertView==null){
       convertView = View.inflate(MainActivity.this,R.layout.pulllist,null);
       sj.image=convertView.findViewById(R.id.iv);
       sj.tv=convertView.findViewById(R.id.tv);
       convertView.setTag(sj);
     }else {
       sj =(Sj) convertView.getTag();
     }
     sj.tv.setText(dataBean.getSUBTITLE());
     DisplayImageOptions options = new DisplayImageOptions.Builder()
         .cacheInMemory(true)
         .cacheOnDisk(true)
         .showImageOnLoading(R.drawable.zhengzaijiazai)
         .showImageForEmptyUri(R.drawable.zhengzaijiazai)
         .showImageOnFail(R.drawable.zhengzaijiazai)
         .bitmapConfig(Bitmap.Config.RGB_565)
         .build();
     ImageLoader.getInstance().displayImage((String) dataBean.getIMAGEURL(),sj.image,options);

return convertView;
   }
 }
 class Sj{
   ImageView image;
   TextView tv;
 }
 }

来源:https://blog.csdn.net/dp666666/article/details/78481938

0
投稿

猜你喜欢

  • 目录一、背景二、推荐方式2.1 自定义的枚举2.2 外部枚举三、总结一、背景平时工作开发过程中,难免会用到状态机(状态的流转)。如奖学金审批
  • 利用HOOK技术来做一个键盘记录器,看看一天下来,我们点击了多少次键盘,哪些键的使用频率最高。实现功能使用C#实现一个键盘记录器开发环境开发
  • malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的
  • 现在就为大家介绍一种基于因子分解的RSA算法,这种加密算法有两种实现形式:1、公钥加密,私钥解密;2、私钥加密,公钥解密。下面就为大家分析一
  • 本文实例讲述了C#中线程同步对象的方法。分享给大家供大家参考。具体分析如下:在编写多线程程序时无可避免会遇到线程的同步问题。什么是线程的同步
  • 上篇文章我们已经可以在 Grafana 上看到对应的 SpringBoot 应用信息了,通过这些信息我们可以对 SpringBoot 应用有
  • 场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,这时候,需求变化了,我三种剑变成了,匕首、剑以及木棒,想要用工厂方法来实现,怎么弄?1
  • 一、前言 Android 中解决滑动的方案有2种:外部拦截法 和内部拦截法。 滑动冲突也存在2种场景: 横竖滑动冲突、同向滑动冲突。 所以我
  • 本文主要介绍的是一个球形水波的百分比控件,市面上有各种形形色色的百分比控件,我一直觉得水波是最炫的,UI给了我这个机会,然而网上搜了一大堆,
  • 主要介绍springboot项目中配置文件的加密前言为了保证服务器相关信息的保密,一般会采用加密的方式进行对配置文件原文的加密,今天介绍下s
  • 前言工作中使用mybatis时我们需要根据数据表字段创建pojo类、mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作
  • 前言内存泄漏简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系
  • 前言最近在优化自己之前基于Spring AOP的统一响应体的实现方案。什么是统一响应体呢?在目前的前后端分离架构下,后端主要是一个RESTf
  • 前言我在以往的文章中曾介绍过如何给Word文档添加文本水印和图片水印,及怎样删除文档中的水印。关于文本水印,之前那篇教程里主要指的是单行字体
  • 上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录。这里我就假设你已经拿到了要保存的联系人数据。 因为
  • c#中Math类的方法Math.Abs 已重载。 返回指定数字的绝对值。Math.Acos 返回余弦值为指定数字的角度。Math.Asin
  • 中国科学院开源协会镜像站地址:IPV4/IPV6: http://mirrors.opencas.cn 端口:80IPV4/IPV6: ht
  • 本文实例讲述了C#队列Queue多线程用法。分享给大家供大家参考。具体分析如下:这里展示一个例子,供学习使用:private void bu
  • Maven是项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。Maven是一个项目管理工具,它包
  • 简介说明本文介绍Spring如何控制Bean注入的顺序。首先需要说明的是:在Bean上加@Order(xxx)是无法控制bean注入的顺序的
手机版 软件编程 asp之家 www.aspxhome.com