GridView
轮播图与gridview用一个集合,刷新GridView的时候,轮播图也要刷新
public class FragmentGridView extends Fragment {
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.arg1==0){
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
handler.sendEmptyMessageDelayed(0,2000);
}
}
};
private View view;
private ILoadingLayout startLabels;
List<MenuBean.ResultBean.DataBean> list=new ArrayList<>();
private GridAdapter gridAdapter;
private int page_num=1;
private ViewPager viewPager;
private PullToRefreshGridView refreshGridView;
private LunBoTuAdapter lunBoTuAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.gridview_layout,container,false);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
refreshGridView = (PullToRefreshGridView) view.findViewById(R.id.refresh_grid_view);
viewPager.setCurrentItem(list.size()%2);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
refreshGridView.setMode(PullToRefreshBase.Mode.BOTH);
startLabels = refreshGridView.getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("下拉刷新");
startLabels.setRefreshingLabel("正在刷新...");
startLabels.setReleaseLabel("放开刷新");
ILoadingLayout endLabels = refreshGridView.getLoadingLayoutProxy(false, true);
endLabels.setPullLabel("上拉刷新");
endLabels.setRefreshingLabel("正在载入...");
endLabels.setReleaseLabel("放开刷新...");
getDataFromNet();
refreshGridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
NetDataUtil.getData("http://apis.juhe.cn/cook/query?key=8f8d012e307185e94e20062dff1f698a&menu=%E9%B1%BC&rn=10&pn=1", getActivity(), new GsonCallBack() {
@Override
public void getJsonString(String json) {
Gson gson = new Gson();
MenuBean menuBean = gson.fromJson(json, MenuBean.class);
list.clear();
list.addAll(0,menuBean.getResult().getData());
LunBoTu();
setAdapter();
//停止刷新
refreshGridView.onRefreshComplete();
startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));
}
});
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
page_num++;
getDataFromNet();
}
});
}
private void getDataFromNet() {
NetDataUtil.getData("http://apis.juhe.cn/cook/query?key=8f8d012e307185e94e20062dff1f698a&menu=%E9%B1%BC&rn=10&pn="+page_num, getActivity(), new GsonCallBack() {
@Override
public void getJsonString(String json) {
Gson gson = new Gson();
MenuBean menuBean = gson.fromJson(json, MenuBean.class);
list.addAll(menuBean.getResult().getData());
setAdapter();
LunBoTu();
//停止刷新
refreshGridView.onRefreshComplete();
}
});
}
private void LunBoTu() {
if (lunBoTuAdapter == null){
lunBoTuAdapter = new LunBoTuAdapter(getActivity(), list,handler);
viewPager.setAdapter(lunBoTuAdapter);
}else {
lunBoTuAdapter.notifyDataSetChanged();
}
handler.sendEmptyMessageDelayed(0,2000);
}
private void setAdapter() {
if(gridAdapter==null) {
gridAdapter = new GridAdapter(getActivity(), list);
refreshGridView.setAdapter(gridAdapter);
}else{
gridAdapter.notifyDataSetChanged();
}
}
}
适配器
public class GridAdapter extends BaseAdapter {
Context context;
List<MenuBean.ResultBean.DataBean> list;
public GridAdapter(Context context, List<MenuBean.ResultBean.DataBean> list) {
this.context=context;
this.list=list;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if(convertView==null){
convertView=View.inflate(context, R.layout.grid_item_layout,null);
vh=new ViewHolder();
vh.des= (TextView) convertView.findViewById(R.id.des);
vh.img= (ImageView) convertView.findViewById(R.id.img);
convertView.setTag(vh);
}else{
vh= (ViewHolder) convertView.getTag();
}
ImageLoader.getInstance().displayImage(list.get(position).getAlbums().get(0),vh.img, ImageUtil.getDefaultOption());
vh.des.setText(list.get(position).getTitle());
return convertView;
}
class ViewHolder{
ImageView img;
TextView des;
}
}
轮播图适配器
public class LunBoTuAdapter extends PagerAdapter {
Context context;
List<MenuBean.ResultBean.DataBean> list;
public LunBoTuAdapter(Context context, List<MenuBean.ResultBean.DataBean> list, Handler handler) {
this.context=context;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
container.addView(imageView);
ImageLoader.getInstance().displayImage(list.get(position%list.size()).getAlbums().get(0),imageView, ImageUtil.getDefaultOption());
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
}
布局
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="200dp"></android.support.v4.view.ViewPager>
<com.handmark.pulltorefresh.library.PullToRefreshGridView
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/refresh_grid_view"
ptr:ptrDrawable="@drawable/default_ptr_flip"
ptr:ptrAnimationStyle="flip"
android:numColumns="2"
ptr:ptrHeaderBackground="#383838"
ptr:ptrHeaderTextColor="#FFFFFF" ></com.handmark.pulltorefresh.library.PullToRefreshGridView>
适配器中子布局
<ImageView
android:id="@+id/img"
android:layout_width="100dp"
android:layout_height="100dp" />
<TextView
android:id="@+id/des"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />