package com.atguigu.beijingnews.pager; import android.content.Context; import android.graphics.Color; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.atguigu.baselibrary.CacheUtils; import com.atguigu.baselibrary.Constants; import com.atguigu.beijingnews.activity.MainActivity; import com.atguigu.beijingnews.base.BasePager; import com.atguigu.beijingnews.base.MenuDetailBasePager; import com.atguigu.beijingnews.bean.NewsCenterBean; import com.atguigu.beijingnews.detailpager.InteractMenuDetailPager; import com.atguigu.beijingnews.detailpager.NewsMenuDetailPager; import com.atguigu.beijingnews.detailpager.PhotosMenuDetailPager; import com.atguigu.beijingnews.detailpager.TopicMenuDetailPager; import com.atguigu.beijingnews.fragment.LeftMenuFragment; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; import java.util.ArrayList; import java.util.List; /** * 作者:尚硅谷-杨光福 on 2017/2/5 15:57 * 微信:yangguangfu520 * QQ号:541433511 * 作用:新闻中心 */ public class NewsCenterPager extends BasePager { private ArrayList<MenuDetailBasePager> menuDetailBasePagers; /** * 左侧菜单对应的数据 */ private List<NewsCenterBean.DataBean> dataBeanList; public NewsCenterPager(Context context) { super(context); } @Override public void initData() { super.initData(); Log.e("TAG", "新闻页面加载数据了"); //显示菜单按钮 ib_menu.setVisibility(View.VISIBLE); //设置标题 tv_title.setText("新闻"); //实例视图 TextView textView = new TextView(mContext); textView.setTextSize(20); textView.setGravity(Gravity.CENTER); textView.setText("新闻中心"); textView.setTextColor(Color.RED); //和父类的FrameLayout结合 fl_main.addView(textView); String saveJson = CacheUtils.getString(mContext, Constants.NEWSCENTER_PAGER_URL);//"" if(!TextUtils.isEmpty(saveJson)){ processData(saveJson); } // if(saveJson != null){ // //能进来 // processData(saveJson); // } //联网请求 getDataFromNet(); } /** * 联网请求数据 */ private void getDataFromNet() { RequestParams params = new RequestParams(Constants.NEWSCENTER_PAGER_URL); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { CacheUtils.putString(mContext,Constants.NEWSCENTER_PAGER_URL,result); Log.e("TAG", "请求成功=="+result); processData(result); } @Override public void onError(Throwable ex, boolean isOnCallback) { Log.e("TAG", "请求失败==" + ex.getMessage()); } @Override public void onCancelled(CancelledException cex) { Log.e("TAG", "onCancelled==" + cex.getMessage()); } @Override public void onFinished() { Log.e("TAG", "onFinished=="); } }); } /** * 解析数据 * 绑定数据 * * @param json */ private void processData(String json) { //1.解析数据:手动解析(用系统的Api解析)和第三方解析json的框架(Gson,fastjson) // Gson gson = new Gson(); // NewsCenterBean centerBean = new Gson().fromJson(json, NewsCenterBean.class); NewsCenterBean centerBean = paraseJson(json); dataBeanList = centerBean.getData(); Log.e("TAG", "新闻中心解析成功=" + dataBeanList.get(0).getChildren().get(0).getTitle()); //把新闻中心的数据传递给左侧菜单 MainActivity mainActivity = (MainActivity) mContext; //得到左侧菜单 LeftMenuFragment leftMunuFragment = mainActivity.getLeftMenuFragment(); //2.绑定数据 menuDetailBasePagers = new ArrayList<>(); menuDetailBasePagers.add(new NewsMenuDetailPager(mainActivity,dataBeanList.get(0)));//新闻详情页面 menuDetailBasePagers.add(new TopicMenuDetailPager(mainActivity,dataBeanList.get(0)));//专题详情页面 menuDetailBasePagers.add(new PhotosMenuDetailPager(mainActivity,dataBeanList.get(2)));//组图详情页面 menuDetailBasePagers.add(new InteractMenuDetailPager(mainActivity));//互动详情页面 //调用LeftMunuFragment的setData leftMunuFragment.setData(dataBeanList); // switchPager(0); } /** * 手动解析json数据使用系统的api * @param json * @return */ private NewsCenterBean paraseJson(String json) { NewsCenterBean centerBean = new NewsCenterBean(); try { JSONObject jsonObject = new JSONObject(json); int retcode = jsonObject.optInt("retcode"); centerBean.setRetcode(retcode); JSONArray data = jsonObject.optJSONArray("data"); //数据集合 List<NewsCenterBean.DataBean> dataBeans = new ArrayList<>(); centerBean.setData(dataBeans); for (int i = 0; i < data.length(); i++) { JSONObject itemObject = (JSONObject) data.get(i); if (itemObject != null) { //集合装数据 NewsCenterBean.DataBean itemBean = new NewsCenterBean.DataBean(); dataBeans.add(itemBean); int id = itemObject.optInt("id"); itemBean.setId(id); String title = itemObject.optString("title"); itemBean.setTitle(title); int type = itemObject.optInt("type"); itemBean.setType(type); String url = itemObject.optString("url"); itemBean.setUrl(url); String url1 = itemObject.optString("url1"); itemBean.setUrl1(url1); String excurl = itemObject.optString("excurl"); itemBean.setExcurl(excurl); String dayurl = itemObject.optString("dayurl"); itemBean.setDayurl(dayurl); String weekurl = itemObject.optString("weekurl"); itemBean.setDayurl(weekurl); JSONArray children = itemObject.optJSONArray("children"); if (children != null && children.length() > 0) { //设置children的数据 List<NewsCenterBean.DataBean.ChildrenBean> childrenBeans = new ArrayList<>(); itemBean.setChildren(childrenBeans); for (int j = 0; j < children.length(); j++) { NewsCenterBean.DataBean.ChildrenBean childrenBean = new NewsCenterBean.DataBean.ChildrenBean(); //添加到集合中 childrenBeans.add(childrenBean); JSONObject childenObje = (JSONObject) children.get(j); int idc = childenObje.optInt("id"); childrenBean.setId(idc); String titlec = childenObje.optString("title"); childrenBean.setTitle(titlec); int typec = childenObje.optInt("type"); childrenBean.setType(typec); String urlc = childenObje.optString("url"); childrenBean.setUrl(urlc); } } } } } catch (JSONException e) { e.printStackTrace(); } return centerBean; } /** * 更加位置切换到不同的详情页面 * * @param prePosition */ public void switchPager(int prePosition) { //设置标题 tv_title.setText(dataBeanList.get(prePosition).getTitle()); if(prePosition < menuDetailBasePagers.size()){ MenuDetailBasePager menuDetailBasePager = menuDetailBasePagers.get(prePosition); //调用 menuDetailBasePager.initData(); //视图 View rootView = menuDetailBasePager.rootView; fl_main.removeAllViews();//移除之前的 fl_main.addView(rootView); if(prePosition ==2){ //组图 ib_swich_list_gird.setVisibility(View.VISIBLE); ib_swich_list_gird.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PhotosMenuDetailPager photosMenuDetailPager = (PhotosMenuDetailPager) menuDetailBasePagers.get(2); photosMenuDetailPager.swichListGrid(ib_swich_list_gird); } }); }else{ //其他 ib_swich_list_gird.setVisibility(View.GONE); } }else{ Toast.makeText(mContext, "该页面暂时未实现", Toast.LENGTH_SHORT).show(); } } }