智慧北京:菜单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
- 智慧北京:菜单UI和数据的加载
- 智慧北京:新闻中心新闻菜单数据的加载
- 智慧北京:引导页面ViewPager数据的加载
- 智慧北京:菜单按钮点击的实现
- 智慧北京:新闻中心菜单切换的实现
- 智慧北京:内容页面UI的实现
- 智慧北京:顶部图片的加载
- 智慧北京:主页中内容页面和菜单页面fragment的实现
- 智慧北京:新闻菜单中ViewPager的touch处理
- 智慧北京:懒加载的ViewPager的实现
- 智慧北京:设置菜单可否滑动(在首页和设置滑动页面,不出现菜单)
- 智慧北京:引导页面数据的缓存跳转
- 智慧北京:SlidingMenu的使用
- 智慧北京:网络访问数据缓存
- winform简单的UI和数据异步加载
- 智慧北京
- 智慧北京:XUtils的View的注入
- 智慧北京:MVC的简单介绍
- CardView、CoordinatorLayout
- 事物注解方式: @Transactional
- AndroidStudio怎么将开源项目发布到jcenter
- C++中引用(&)的用法和应用实例
- 性能优化
- 智慧北京:菜单UI和数据的加载
- 一种高性能网络游戏服务器架构设计
- 【PAT甲级】1025. PAT Ranking (25)
- 415. Add Strings
- 数据结构----顺序栈实现逆波兰表达式(后缀表达式)求解
- Callable 与 Runable 使用心得
- Android网络请求---AsyncHttpClient的使用
- 第七周 oj 2679百位数分解
- 在 Linux 下搭建 Git 服务器