1、实现内容:title的改变;
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);
}
……
}