PullToRefreshListView多条目加载上拉刷新下拉加载

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 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() {
            @Override
            //上拉
            public void onPullDownToRefresh(PullToRefreshBase 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 refreshView) {
                i = i + 20;new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + i);

            }
        });
    }
    class MyAsyncTask extends AsyncTask {

        @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 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;
    }
    }













你可能感兴趣的:(PullToRefreshListView多条目加载上拉刷新下拉加载)