智慧北京:菜单UI和数据的加载
2016-10-18 10:50
169 查看
实现效果:
步骤:
1、获得MenuFragment
2、NewsCenterController解析完的数据传递给MenuFragment,即给菜单传递数据
3、设置MenuFragment页面设置布局,并且给菜单设置数据
代码实现:
MainUI.java
NewsCenterTabController
MenuFragment.java
item_menu.xml
样式:
item_menu_text_color.xml
item_menu_bg.xml
步骤:
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>
相关文章推荐
- 智慧北京:新闻中心新闻菜单数据的加载
- 智慧北京:引导页面ViewPager数据的加载
- 优化UI体验:程序启动、页面切换、数据加载、UI响应
- javascript树形菜单(一):Tigra Tree Menu,实现动态数据加载
- listview分页加载刷新——--填充数据,适配器更新与UI同步更新问题
- [QS] 同一个UI多个拥有右键菜单功能及数据拖动功能的Datagrid出现的假死问题
- PHP+MySQL+Easyui tree菜单从后台加载json数据(一)
- 安卓智慧上海学习笔记系列——禁用ViewPager页面切换效果及不自动加载下一页数据
- Easy UI的树形菜单的异步加载
- PHP+Mysql+easyui点击左侧tree菜单对应表名右侧动态生成datagrid加载表单数据(二)
- 线程加载数据后的ui线程刷新实现
- jquery - easy - ui 下的tree (动态加载数据)
- JsTree异步加载数据实现多级菜单
- easy ui tree json 数据 无法加载的问题
- JFinal 实现jQuery EasyUI ComboTree数据加载并收起菜单节点
- 点击导航条的某一项,与之相对应的Iframe的切换同时加载数据(可用于多级菜单)
- Jquery easy ui的分页,table,数据加载
- Easy-ui 加载树资源 以及遍历数据
- AngularJS - 利用ui-route及provider实现页面数据预加载的关键
- UI基础-UITableViewHeaderFooterView组标题数据不加载,好友列表只能点击不能打开