前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PullToRefreshListView实现多条目加载上拉刷新和下拉加载

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

作者头像
砸漏
发布2020-11-04 11:03:56
9090
发布2020-11-04 11:03:56
举报
文章被收录于专栏:恩蓝脚本

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

XML布局

主页面main布局

代码语言:javascript
复制
<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布局

代码语言:javascript
复制
<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页面

代码语言:javascript
复制
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页面

代码语言:javascript
复制
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;
}
}

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档