您的位置:首页 > 产品设计 > UI/UE

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

2016-10-18 10:50 148 查看
实现效果:





步骤:

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;
ec90
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: