packagecom.example.administrator.test66smartbeijing.fragment;importandroid.annotation.SuppressLint;importandroid.graphics.Color;importandroid.os.Bundle;importandroid.support.annotation.NonNull;importandroid.support.annotation.Nullable;importandroid.support.v4.app.Fragment;importandroid.support.v4.view.PagerAdapter;importandroid.support.v4.view.ViewPager;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.ImageView;importandroid.widget.TextView;importcom.alibaba.fastjson.JSONObject;importcom.bumptech.glide.Glide;importcom.example.administrator.test66smartbeijing.R;importcom.example.administrator.test66smartbeijing.javabean.NewsMenu;importcom.example.administrator.test66smartbeijing.javabean.NewsTabBean;importcom.example.administrator.test66smartbeijing.utils.CacheUtils;importcom.example.administrator.test66smartbeijing.utils.ConstantValue;importcom.example.administrator.test66smartbeijing.utils.RecyclerAdapter;importnet.lucode.hackware.magicindicator.MagicIndicator;importnet.lucode.hackware.magicindicator.ViewPagerHelper;importnet.lucode.hackware.magicindicator.buildins.circlenavigator.CircleNavigator;importorg.xutils.common.Callback;importorg.xutils.http.RequestParams;importorg.xutils.image.ImageOptions;importorg.xutils.x;importjava.util.ArrayList;import staticandroid.media.AudioRecord.MetricsConstants.CHANNELS;/****/
public class TabDataFragment extendsFragment {
String queryResultStr="";
NewsMenu newsMenu;
ArrayListtopnews;privateViewPager viewPager;
TextView tv_news_vp_title;publicTabDataFragment() {
}
@SuppressLint("ValidFragment")publicTabDataFragment(NewsMenu newsMenu) {this.newsMenu=newsMenu;
}//新建一个Fragment实例
public staticFragment newInstance() {
TabDataFragment fragment= newTabDataFragment();returnfragment;
}
@Nullable
@OverridepublicView onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {//LayoutInflater.inflate()的功能是将一段 XML 资源文件加载成为 View。所以通常用于将 XML 文件实例化为 View。然后获取 View 上的组件最后操作之。
View rootView = inflater.inflate(R.layout.fragment_tab_data, container, false);
viewPager=rootView.findViewById(R.id.vp_news_center);
tv_news_vp_title=rootView.findViewById(R.id.tv_news_vp_title);
getDataFromServer();returnrootView;
}/*** viewPager的数据适配器*/
class NewsCenterAdapter extendsPagerAdapter{
@Overridepublic intgetCount() {returntopnews.size();
}
@Overridepublic booleanisViewFromObject(@NonNull View view, @NonNull Object object) {return view==object;
}
@NonNull
@Overridepublic Object instantiateItem(@NonNull ViewGroup container, intposition) {
ImageView imageView=newImageView(getActivity());//imageView.setImageResource(R.mipmap.news_pic_default);
String imageUrlTemp=topnews.get(position).topimage;//String imageUrl="http://118.25.152.62:8080/zhbj/10007/1452327318UU91.jpg";
String imageUrl=ConstantValue.SERVER_URL+imageUrlTemp.substring(25);
System.out.println(imageUrl);//利用Glide开源框架,加载网络图片
Glide.with(getActivity()).load(imageUrl).into(imageView);
container.addView(imageView);returnimageView;
}//销毁item
@Overridepublic void destroyItem(@NonNull ViewGroup container, intposition, @NonNull Object object) {
container.removeView((View) object);
}
}/*** 从服务器获取数据*/
private voidgetDataFromServer() {//请求地址
String url=ConstantValue.SERVER_URL+newsMenu.data.get(0).children.get(0).url;
RequestParams params= newRequestParams(url);
x.http().get(params,new Callback.CommonCallback() {
@Overridepublic voidonSuccess(String result) {//解析result
queryResultStr=result;
System.out.println(result);
processData(queryResultStr);//写缓存
CacheUtils.setCache(ConstantValue.NEWSCENTER_URL,queryResultStr,getActivity());
}//请求异常后的回调方法
@Overridepublic void onError(Throwable ex, booleanisOnCallback) {
}//主动调用取消请求的回调方法
@Overridepublic voidonCancelled(CancelledException cex) {
}
@Overridepublic voidonFinished() {
}
});
}/***@paramqueryResultStr 服务器返回结果*/
private voidprocessData(String queryResultStr) {
NewsTabBean newsTabBean= JSONObject.parseObject(queryResultStr,NewsTabBean.class);//利用viewPager实现图片轮播效果
topnews =newsTabBean.data.topnews;if(topnews!=null){
viewPager.setAdapter(newNewsCenterAdapter());
viewPager.setOnPageChangeListener(newViewPager.OnPageChangeListener() {
@Overridepublic void onPageScrolled(int position, float positionOffset, intpositionOffsetPixels) {
}
@Overridepublic void onPageSelected(intposition) {//设置viewpager上图片的标题
tv_news_vp_title.setText(topnews.get(position).title);
}
@Overridepublic void onPageScrollStateChanged(intstate) {
}
});//更新第一个头条新闻标题
tv_news_vp_title.setText(topnews.get(0).title);
initMagicIndicator1();
}
}/*** 初始化MagicIndicator*/
private voidinitMagicIndicator1() {
MagicIndicator magicIndicator=getActivity().findViewById(R.id.magic_indicator1);
CircleNavigator circleNavigator= newCircleNavigator(getActivity());
circleNavigator.setCircleCount(topnews.size());
circleNavigator.setCircleColor(Color.RED);
circleNavigator.setCircleClickListener(newCircleNavigator.OnCircleClickListener() {
@Overridepublic void onClick(intindex) {
viewPager.setCurrentItem(index);
}
});
magicIndicator.setNavigator(circleNavigator);
ViewPagerHelper.bind(magicIndicator, viewPager);
}
}