智慧北京:菜单UI和数据的加载

实现效果:
这里写图片描述
这里写图片描述

步骤:
1、获得MenuFragment
2、NewsCenterController解析完的数据传递给MenuFragment,即给菜单传递数据
3、设置MenuFragment页面设置布局,并且给菜单设置数据

代码实现:
MainUI.java

package huaxa.it.zhihuidemo;

import huaxa.it.zhihuidemo.fragment.ContentFragment;
import huaxa.it.zhihuidemo.fragment.MenuFragment;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Window;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

/**
 * @项目名:     ZhiHuiDemo
 * @包名:         huaxa.it.zhihuidemo
 * @类名:         MainUI
 * @创建者:     黄夏莲
 * @创建时间: 2016年10月4日 ,下午11:38:11
 * 
 * @描述:          主页面 
 */
public class MainUI extends SlidingFragmentActivity
{
    ……
    public MenuFragment getMenuFragment(){
        FragmentManager manager = getSupportFragmentManager();
        return (MenuFragment) manager.findFragmentByTag(TAG_MENU);


    }
}

NewsCenterTabController

/**
             * 数据处理
             * 
             * @param json
             */
            private void ProcessData(String json)
            {
                // 1、json解析 String ----> Object
                Gson gson = new Gson();
                // 第二个参数指的是要转换成的类型,JavaBean的类型
                NewsCenterBean bean = gson.fromJson(json, NewsCenterBean.class);

                List<NewsCenterMenuBean> mMenuDatas = bean.data;
                String title = bean.data.get(0).children.get(0).title;
                // 校验一下
                Log.i(TAG, "校验" + title);

                // 2、将Model设置给View(Model--->View)
                // 2-1给菜单加载数据
                MenuFragment menuFragment = ((MainUI) mContext)
                        .getMenuFragment();
                menuFragment.setData(mMenuDatas);

                // 2-2给自己的内容实体加载数据

                // 加载默认的第一个View
                switchMenu(0);
            }

MenuFragment.java

package huaxa.it.zhihuidemo.fragment;

import java.util.List;

import huaxa.it.zhihuidemo.BaseFragment;
import huaxa.it.zhihuidemo.R;
import huaxa.it.zhihuidemo.bean.NewsCenterBean.NewsCenterMenuBean;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

/**
 * @项目名: ZhiHuiDemo
 * @包名: huaxa.it.zhihuidemo.fragment
 * @类名: MainFragment
 * @创建者: 黄夏莲
 * @创建时间: 2016年10月5日 ,下午11:32:13
 * 
 * @描述: 菜单页面
 */
public class MenuFragment extends BaseFragment
{
    private ListView                    mListView;
    private List<NewsCenterMenuBean>    mMenuDatas; // 菜单对应的数据
    private mCurrentMenu;
    @Override
    protected View initView()
    {
        // TextView text = new TextView(mActivity);
        //
        // text.setText("菜单页面");
        // text.setTextSize(25);
        // text.setGravity(Gravity.CENTER);
        // return text;
        mListView = new ListView(mActivity);
        return mListView;
    }

    public void setData(List<NewsCenterMenuBean> datas)
    {
        this.mMenuDatas = datas;
        //设置默认选中项
        mCurrentMenu = 0;
        // 设置数据Adapter --> List
        mListView.setAdapter(new ListAdapter());

    }

    public class ListAdapter extends BaseAdapter
    {

        @Override
        public int getCount()
        {
            if (mMenuDatas != null)
            {
                return mMenuDatas.size();
            }
            return 0;
        }

        @Override
        public Object getItem(int position)
        {
            if (mMenuDatas != null)
            {
                return mMenuDatas.get(position);
            }
            return null;
        }

        @Override
        public long getItemId(int position)
        {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            ViewHolder holder = null;
            if (convertView == null)
            {
                convertView = View.inflate(mActivity, R.layout.item_menu, null);
                holder = new ViewHolder();
                holder.tv = (TextView) convertView.findViewById(R.id.text);
                convertView.setTag(holder);
            } else
            {
                holder = (ViewHolder) convertView.getTag();
            }
            NewsCenterMenuBean bean = mMenuDatas.get(position);
            holder.tv.setText(bean.title);
            //设置控件是否可以点击
            holder.tv.setEnabled(mCurrentMenu == position);
            return convertView;
        }

    }

    class ViewHolder
    {
        TextView    tv;
    }
}

item_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text"
    android:drawableLeft="@drawable/item_menu_bg"
    android:textColor="@color/item_menu_text_color"
    android:drawablePadding="10sp"
    android:padding="20dp"
    android:textSize="24sp"
    android:text="菜单" >

</TextView>

样式:
item_menu_text_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 可用时 -->
    <item android:state_enabled="true" android:color="@color/red"/>

    <!-- 不可用 -->
    <item android:state_enabled="false" android:color="@color/white"/>

</selector>

item_menu_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <!-- 可用时 -->
    <item android:drawable="@drawable/menu_arr_select" android:state_enabled="true"/>

    <!-- 不可用 -->
    <item android:drawable="@drawable/menu_arr_normal" android:state_enabled="false"/>

</selector>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值