智慧北京:新闻中心新闻菜单数据的加载
2016-11-07 10:50
176 查看
1、实现内容:title的改变;
NewsCenterTabController
2、数据加载第一步:设置ViewPager布局
newscenter_news.xml
第二步:将这个ViewPager加载到MenuControllerNews里面
1、先将该布局文件转换成View,然后用ViewUtils工具注入到该类中;
2、给ViewPager设置数据–>adapter–>List;
I:这里涉及到Adapter的设置,:继承PagerAdapter,其中主要需要设置返回的count数量和返回的View,这些需要用到List,装有数据的NewsCenterMenuBean
II:List的设置,其中E已经设计完成,此时需要将E装进List里面;
MenuControllerNews.java
NewsCenterTabController.java
NewsCenterTabController
package huaxa.it.zhihuidemo.base.tab; import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.RequestParams; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.lidroid.xutils.http.client.HttpRequest.HttpMethod; import android.content.Context; import android.drm.ProcessedData; import android.graphics.Color; import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import huaxa.it.zhihuidemo.MainUI; import huaxa.it.zhihuidemo.base.TabController; import huaxa.it.zhihuidemo.bean.NewsCenterBean; import huaxa.it.zhihuidemo.bean.NewsCenterBean.NewsCenterMenuBean; import huaxa.it.zhihuidemo.fragment.MenuFragment; import huaxa.it.zhihuidemo.newscenter.MenuController; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerHuDong; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerNews; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerZhuanTi; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerZuTu; import huaxa.it.zhihuidemo.utils.Constans; /** * * @项目名: ZhiHuiDemo * @包名: huaxa.it.zhihuidemo.base.tab * @类名: NewsCenterTabController * @创建者: 黄夏莲 * @创建时间: 2016年10月9日 ,上午7:29:31 * * @描述: 新闻中心对应的controller */ public class NewsCenterTabController extends TabController { // private TextView text; private List<MenuController> mMenuControllers; private FrameLayout mContainer; private String TAG = "TAG"; private List<NewsCenterMenuBean> mMenuDatas; …… /** * 数据处理 * * @param json */ private void ProcessData(String json) { // 1、json解析 String ----> Object Gson gson = new Gson(); // 第二个参数指的是要转换成的类型,JavaBean的类型 NewsCenterBean bean = gson.fromJson(json, NewsCenterBean.class); mMenuDatas = bean.data; // String title = bean.data.get(0).children.get(0).title; // // 校验一下 // Log.i(TAG, "校验" + title); …… } @Override public void switchMenu(int position) { …… // 加载title mTvTitle.setText(mMenuDatas.get(position).title); …… } }
2、数据加载第一步:设置ViewPager布局
newscenter_news.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/newscenter_new" /> </LinearLayout>
第二步:将这个ViewPager加载到MenuControllerNews里面
1、先将该布局文件转换成View,然后用ViewUtils工具注入到该类中;
2、给ViewPager设置数据–>adapter–>List;
I:这里涉及到Adapter的设置,:继承PagerAdapter,其中主要需要设置返回的count数量和返回的View,这些需要用到List,装有数据的NewsCenterMenuBean
II:List的设置,其中E已经设计完成,此时需要将E装进List里面;
MenuControllerNews.java
package huaxa.it.zhihuidemo.newscenter.tab; import java.util.List; import java.util.zip.Inflater; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import android.content.Context; import android.graphics.Color; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import huaxa.it.zhihuidemo.R; import huaxa.it.zhihuidemo.bean.NewsCenterBean.NewsBean; import huaxa.it.zhihuidemo.bean.NewsCenterBean.NewsCenterMenuBean; import huaxa.it.zhihuidemo.newscenter.MenuController; /** * @项目名: ZhiHuiDemo * @包名: huaxa.it.zhihuidemo.newscenter.tab * @类名: MenuControllerNews * @创建者: 黄夏莲 * @创建时间: 2016年10月18日 ,下午10:05:42 * * @描述: 新闻中心中,新闻菜单对应的控制器 */ public class MenuControllerNews extends MenuController { // private TextView tv; @ViewInject(R.id.newscenter_new) private ViewPager mPager; private NewsCenterMenuBean newsCenterMenuBean; private List<NewsBean> mChildren;//ViewPager对应的数据 public MenuControllerNews(Context context, NewsCenterMenuBean newsCenterMenuBean) { super(context); this.newsCenterMenuBean = newsCenterMenuBean; mChildren = newsCenterMenuBean.children; } @Override protected View initView(Context context) { // tv = new TextView(context); // // tv.setTextColor(Color.RED); // tv.setTextSize(24); // tv.setGravity(Gravity.CENTER); View view = View.inflate(context, R.layout.newscenter_news, null); // 注入ViewUtils工具 ViewUtils.inject(this, view); return view; } public void initData() { // tv.setText("新闻中心中,新闻菜单的内容"); // adapter-->list mPager.setAdapter(new newsPagerAdapter()); } class newsPagerAdapter extends PagerAdapter { @Override public int getCount() { if (mChildren != null) { return mChildren.size(); } return 0; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { TextView text = new TextView(mContext); text.setText(mChildren.get(position).title); text.setTextColor(Color.RED); text.setTextSize(24); text.setGravity(Gravity.CENTER); container.addView(text); System.out.println(mChildren.size()); return text; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } }
NewsCenterTabController.java
package huaxa.it.zhihuidemo.base.tab; import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.RequestParams; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.lidroid.xutils.http.client.HttpRequest.HttpMethod; import android.content.Context; import android.drm.ProcessedData; import android.graphics.Color; import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import huaxa.it.zhihuidemo.MainUI; import huaxa.it.zhihuidemo.base.TabController; import huaxa.it.zhihuidemo.bean.NewsCenterBean; import huaxa.it.zhihuidemo.bean.NewsCenterBean.NewsCenterMenuBean; import huaxa.it.zhihuidemo.fragment.MenuFragment; import huaxa.it.zhihuidemo.newscenter.MenuController; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerHuDong; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerNews; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerZhuanTi; import huaxa.it.zhihuidemo.newscenter.tab.MenuControllerZuTu; import huaxa.it.zhihuidemo.utils.Constans; /** * * @项目名: ZhiHuiDemo * @包名: huaxa.it.zhihuidemo.base.tab * @类名: NewsCenterTabController * @创建者: 黄夏莲 * @创建时间: 2016年10月9日 ,上午7:29:31 * * @描述: 新闻中心对应的controller */ public class NewsCenterTabController extends TabController { // private TextView text; private List<MenuController> mMenuControllers; private FrameLayout mContainer; private String TAG = "TAG"; private List<NewsCenterMenuBean> mMenuDatas; public NewsCenterTabController(Context context) { super(context); } protected View initContentView(Context context) { // text = new TextView(context); // // text.setTextColor(Color.RED); // text.setTextSize(24); // text.setGravity(Gravity.CENTER); // // return text; mContainer = new FrameLayout(context); return mContainer; } @Override public void initData() { …… /** * 数据处理 * * @param json */ private void ProcessData(String json) { …… // 2-2给自己的内容实体加载数据 mMenuControllers = new ArrayList<MenuController>(); for (int i = 0; i < mMenuDatas.size(); i++) { NewsCenterMenuBean newsCenterMenuBean = mMenuDatas.get(i); int type = newsCenterMenuBean.type; switch (type) { case 1: mMenuControllers.add(new MenuControllerNews(mContext,newsCenterMenuBean));// 新闻菜单 break; case 10: mMenuControllers.add(new MenuControllerZhuanTi(mContext));// 专题菜单 break; case 2: mMenuControllers.add(new MenuControllerZuTu(mContext));// 组图菜单 break; case 3: mMenuControllers.add(new MenuControllerHuDong(mContext));// 互动菜单 break; default: break; } } // 加载默认的第一个View switchMenu(0); } …… }
相关文章推荐
- 智慧北京:新闻中心菜单切换的实现
- 智慧北京:菜单UI和数据的加载
- 智慧北京:引导页面ViewPager数据的加载
- 智慧北京:新闻菜单中ViewPager的touch处理
- 点击导航条的某一项,与之相对应的Iframe的切换同时加载数据(可用于多级菜单)
- 后台模板管理系统___左侧菜单数据的异步加载
- vue+vue-router+vuex,利用vue-router2.2.0新增特性addRoutes实现路由动态加载,菜单动态加载,运用于后台管理系统,路由数据取自数据库
- 多级选择菜单——数据加载
- 带有侧滑菜单的+ 通过retrofit获取数据,通过fresco框架加载图片,使用TabLayout + ViewPage + Fragment + ListView 显示数据
- SolpartMenu的使用:(二)、在ASP.NET页面中使用SolpartMenu控件之动态的加载数据库中的数据来生成菜单
- 仿知乎日报第七篇:为菜单区加载布局以及加载数据
- 智慧北京:设置菜单可否滑动(在首页和设置滑动页面,不出现菜单)
- web前端从Oracle数据库加载动态菜单所用到的数据表
- 安卓智慧上海学习笔记系列——禁用ViewPager页面切换效果及不自动加载下一页数据
- 黑马北京新闻项目连载(6)--->Gson解析、刷新加载、WebView展现
- 使用ztree异步加载数据库数据形成树形菜单
- PHP+MySQL+Easyui tree菜单从后台加载json数据(一)
- JsTree异步加载数据实现多级菜单
- SolpartMenu的使用:(二)、在ASP.NET页面中使用SolpartMenu控件之动态的加载数据库中的数据来生成菜单
- 智慧北京:主页中内容页面和菜单页面fragment的实现