实现效果:
步骤:
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>