- 首先导入PullToRefrensh的library包
- gson、imageLoader的依赖
例如:
compile project(':PullToRefresh-master-library')
compile ‘com.google.code.gson:gson:2.2.4’
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’
- 在布局文件中写入:
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
子布局: .......ImageView、TextView.........
- 主要:千万不要忘了在清单文件中注册!!!
在Activity中进行相应的操作
//自定义一个获取数据网络接口
String path ="http://api.tianapi.com/it/?key=404a3c62f59023713f86132d20787d76&num=10&page=1";
private int page = 1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PullToRefreshListView plv = (PullToRefreshListView) findViewById(R.id.plv);
/**
* 设置可以上拉加载,下拉刷新
*/
plv.setMode(PullToRefreshBase.Mode.BOTH);
plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
plv.postDelayed(new Runnable() {
@Override
public void run() {
//清除里面的数据
list1.clear();
new MyTask().execute(path);
//停止刷新
plv.onRefreshComplete();
}
},1000);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
plv.postDelayed(new Runnable() {
@Override
public void run() {
//实现页面自增
page++;
new MyTask().execute("http://api.tianapi.com/it/?key=404a3c62f59023713f86132d20787d76&num=10&page="+page);
//停止刷新
plv.onRefreshComplete();
}
},1000);
}
});
new MyTask().execute(path);
}
new一个MyTask类
class MyTask extends AsyncTask<String,String,String> {
@Override
protected String doInBackground(String... strings) {
String path = strings[0];
try {
/*
得到当前需要的path
*/
URL url = new URL(path);
/**
* 得到网络请求
*/
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
/**
* 设置延时时间
*/
connection.setConnectTimeout(3000);
//得到请求方式
connection.setRequestMethod("GET");
//得到请求码
int responseCode = connection.getResponseCode();
/*
判断是否请求成功
*/
if (responseCode == 200) {
int len;
byte[] b = new byte[1024 * 20];
InputStream inputStream = connection.getInputStream();
outputStream = new ByteArrayOutputStream();
while ((len = inputStream.read(b)) != -1) {
outputStream.write(b,0,len);
}
}
return outputStream.toString();//返回数据信息
} catch (Exception e) {
e.printStackTrace();
}
return null;//返回空
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
/**
* 转换json串
*/
Bean json = gson.fromJson(s, Bean.class);
List<Bean.NewslistBean> list = json.getNewslist();
/**
* 添加到另一个集合中
*/
list1.addAll(list);
/**
* 设置适配器
*/
MyAdapter adapter = new MyAdapter(MainActivity.this, list);
plv.setAdapter(adapter);
}
}
设置全局的图片适配
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
/**
* 进行图片全局适配
*/
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(configuration);
}
}
自定义一个Adapter
public class MyAdapter extends BaseAdapter {
Context context;
List<Bean.NewslistBean> list;
private ViewHolder holder;
public MyAdapter(Context context, List<Bean.NewslistBean> list){
this.context=context;
this.list=list;
}
/*
返回count
*/
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return 0;
}
@Override
public long getItemId(int i) {
return 0;
}
/**
* 优化
* @param i
* @param view
* @param viewGroup
* @return
*/
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
view = View.inflate(context, R.layout.lv_item,null);
/*
new一个ViewHolder
*/
holder = new ViewHolder();
//得到数据信息
holder.lv_iv = view.findViewById(R.id.lv_iv);
holder.lv_tv = view.findViewById(R.id.lv_tv);
holder.lv_tv1 = view.findViewById(R.id.lv_tv1);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
/**
*进行赋值
*/
//图片
String s = list.get(i).getPicUrl();
ImageLoader.getInstance().displayImage(s,holder.lv_iv);
//TextView
holder.lv_tv.setText(list.get(i).getTitle());
holder.lv_tv1.setText(list.get(i).getDescription());
return view;//返回view
}
/**
* 自定义一个ViewHolder
*/
class ViewHolder{
ImageView lv_iv;
TextView lv_tv;
TextView lv_tv1;
}
}