//Activity
package com.bawei.eplus.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import com.bawei.eplus.R;
import com.bawei.eplus.adapter.FLAdapter;
import com.bawei.eplus.bean.FLBean;
import com.bawei.eplus.net.HttpUtils;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshGridView;
import java.util.ArrayList;
import java.util.List;
/**
* 福利页面
*
* @author zhaoliang
* @version 1.0
* @create 2018/6/22
*/
public class TwoFragment extends Fragment {
private PullToRefreshGridView gridView;
private HttpUtils httpUtils;
private String api = "http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/";
private int page = 1;
private List<FLBean.ResultsBean> resultsBeans = new ArrayList<>();
private FLAdapter adapter;
public TwoFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_two, container, false);
gridView = view.findViewById(R.id.grid_view);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// 设置支持上下刷新
gridView.setMode(PullToRefreshBase.Mode.BOTH);
// 设置刷新回调
gridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
page = 1;
httpUtils.get(api + page);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
page ++;
httpUtils.get(api + page);
}
});
loadData();
}
private void loadData() {
httpUtils = HttpUtils.getInstance();
httpUtils.setCallback(new HttpUtils.NetCallback() {
@Override
public void onSuccess(String s) {
Gson gson = new Gson();
FLBean flBean = gson.fromJson(s, FLBean.class);
if (page == 1) {
adapter = new FLAdapter(getActivity(), resultsBeans);
gridView.setAdapter(adapter);
resultsBeans.clear();
}
resultsBeans.addAll(flBean.getResults());
adapter.notifyDataSetChanged();
gridView.onRefreshComplete();
}
@Override
public void onError(String errorMsg) {
}
});
httpUtils.get(api + page);
}
}
//适配器
package com.bawei.eplus.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bawei.eplus.R;
import com.bawei.eplus.bean.FLBean;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
/**
* 福利适配器
*
* @author zhaoliang
* @version 1.0
* @create 2018/6/22
*/
public class FLAdapter extends BaseAdapter {
private Context context;
private List<FLBean.ResultsBean> resultsBeans;
public FLAdapter(Context context, List<FLBean.ResultsBean> resultsBeans) {
this.context = context;
this.resultsBeans = resultsBeans;
}
@Override
public int getCount() {
return resultsBeans.size();
}
@Override
public FLBean.ResultsBean getItem(int position) {
return resultsBeans.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.fl_item, null, false);
holder.ivImage = convertView.findViewById(R.id.iv_image);
holder.tvTime = convertView.findViewById(R.id.tv_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvTime.setText(resultsBeans.get(position).getDesc());
ImageLoader.getInstance().displayImage(resultsBeans.get(position).getUrl(), holder.ivImage);
return convertView;
}
class ViewHolder {
ImageView ivImage;
TextView tvTime;
}
}
//布局
<?xml version="1.0" encoding="utf-8"?>
<com.handmark.pulltorefresh.library.PullToRefreshGridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:verticalSpacing="10dp" />
//字条目布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_image"
android:layout_width="match_parent"
android:layout_height="300dp" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="10dp"
android:text="2018-9-10" />
</RelativeLayout>