您的位置:首页 > 其它

智慧北京:新闻中心新闻菜单数据的加载

2016-11-07 10:50 176 查看
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);
}

……
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐