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

来源:互联网 发布:应急数据采集更新制度 编辑:程序博客网 时间:2024/05/16 00:34

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

步骤:
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
原创粉丝点击