161.n1-解析json中的数据传递给左边的侧边栏
来源:互联网 发布:java集合框架容器 编辑:程序博客网 时间:2024/06/11 16:52
左侧边栏和ViewPager中的额news没有什么交互,如果要传递数据可以通过MainActivity作为中介来传递数据,首先MainActivity要获取到左侧边栏的对象,
//获取到左侧边栏的对象,娶一个别名public LeftMenuFragment getLeftMenuFragment(){FragmentManager fm = getSupportFragmentManager();LeftMenuFragment leftMenuFragment = (LeftMenuFragment) fm.findFragmentByTag(FRAGMENT_LEFT_MENU);return leftMenuFragment;}
然后newPager创建MainActivity对象获取到左侧边栏的对象,然后之前解析的数据传递给左侧边栏
/ 刷新测边栏的数据,利用MainActivity获取到左侧边栏的数据MainActivity mainUi = (MainActivity) mActivity;//获取到左侧边栏的对象LeftMenuFragment leftMenuFragment = mainUi.getLeftMenuFragment();//设置网络数据leftMenuFragment.setMenuData(mNewsData);
MainActivity.java逻辑文件,创建方法获取到左侧边栏的对象
package com.ldw.news;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;import com.ldw.news.fragment.ContentFragment;import com.ldw.news.fragment.LeftMenuFragment;/* * 主界面 */public class MainActivity extends SlidingFragmentActivity {private static final String FRAGMENT_LEFT_MENU = "fragment_left_menu";private static final String FRAGMENT_CONTENT = "fragment_content";@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView();}private void initView() {requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main); //设置左侧边栏 setBehindContentView(R.layout.left_menu); //获取侧边栏对象 SlidingMenu slidingMenu = getSlidingMenu(); //设置全屏触摸 slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); //设置预留屏幕的宽度 slidingMenu.setBehindOffset(200); initFragment(); }/* * 初始化fragment,将fragment填充给布局文件 */private void initFragment() {FragmentManager fm = getSupportFragmentManager();FragmentTransaction transaction = fm.beginTransaction();// 开启事务//左侧边栏用布局替代(填充)//第三个参数就是给fragment取一个名字,可以使用fm.findFragmentByTag(FRAGMENT_LEFT_MENU);transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),FRAGMENT_LEFT_MENU);// 用fragment替换framelayout//内容的填充transaction.replace(R.id.fl_content, new ContentFragment(),FRAGMENT_CONTENT);transaction.commit();// 提交事务//使用第三个参数// Fragment leftMenuFragment = fm.findFragmentByTag(FRAGMENT_LEFT_MENU);}//获取到左侧边栏的对象,娶一个别名public LeftMenuFragment getLeftMenuFragment(){FragmentManager fm = getSupportFragmentManager();LeftMenuFragment leftMenuFragment = (LeftMenuFragment) fm.findFragmentByTag(FRAGMENT_LEFT_MENU);return leftMenuFragment;}}
左侧边栏的布局,是一个ListView.fragmen_left_menu.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" android:orientation="vertical" > <!-- 侧边栏 --><ListView android:id="@+id/lv_list" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
左侧边栏的单个条目
list_menu_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- 左侧菜单单个条目的布局 --><TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" android:textSize="22sp" android:text="新闻" android:layout_gravity="center" android:drawablePadding="5dp" android:drawableLeft="@drawable/menu_arr_select" /></LinearLayout>
左侧边栏的逻辑文件LeftMenuFragment.java
package com.ldw.news.fragment;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.ldw.news.R;import com.ldw.news.domain.NewsData;import com.lidroid.xutils.ViewUtils;import com.lidroid.xutils.view.annotation.ViewInject;/* * 左侧边栏的内容 */public class LeftMenuFragment extends BaseFragment{@ViewInject(R.id.lv_list)private ListView lv_list;//初始化布局@Overridepublic View initViews() {View view = View.inflate(mActivity, R.layout.fragment_left_menu, null);ViewUtils.inject(this, view);return view;}public void initData(){}//设置网络数据public void setMenuData(NewsData data){System.out.println("左侧的数据是:" + data);}class MenuAdapter extends BaseAdapter{@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = View.inflate(mActivity, R.layout.list_menu_item, null);TextView tv_title = (TextView)view.findViewById(R.id.tv_title);return view;}}}
news的pager先解析数据然后吧数据传递给左边的菜单栏NewsCenterPager.java
package com.ldw.news.base.impl;import android.app.Activity;import android.graphics.Color;import android.view.Gravity;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.google.gson.Gson;import com.ldw.news.MainActivity;import com.ldw.news.base.BasePager;import com.ldw.news.domain.NewsData;import com.ldw.news.fragment.LeftMenuFragment;import com.ldw.news.global.ClobalContants;import com.lidroid.xutils.HttpUtils;import com.lidroid.xutils.exception.HttpException;import com.lidroid.xutils.http.ResponseInfo;import com.lidroid.xutils.http.callback.RequestCallBack;import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;/** * 新闻中心 * * @author Kevin * */public class NewsCenterPager extends BasePager {//private ArrayList<BaseMenuDetailPager> mPagers;// 4个菜单详情页的集合private NewsData mNewsData;public NewsCenterPager(Activity activity) {super(activity);}@Overridepublic void initData() {System.out.println("初始化设置数据....");tvTitle.setText("设置");btnMenu.setVisibility(View.GONE);// 隐藏菜单按钮setSlidingMenuEnable(false);// 关闭侧边栏TextView text = new TextView(mActivity);text.setText("设置");text.setTextColor(Color.RED);text.setTextSize(25);text.setGravity(Gravity.CENTER);// 向FrameLayout中动态添加布局flContent.addView(text);//从服务器中获取数据getDataFromServer();}/* * 从服务器中获取数据,使用xUtils实现 */private void getDataFromServer(){HttpUtils utils = new HttpUtils();//参数是String获取到的是Stringutils.send(HttpMethod.GET, ClobalContants.CATEGORIES_URL, new RequestCallBack<String>(){@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {//获取到返回的结果String result = (String) responseInfo.result;System.out.println("返回结果:" + result);parseData(result);}//访问失败@Overridepublic void onFailure(HttpException error, String msg) {Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT).show();//打印错误信息error.printStackTrace();}});}/* * 解析网络数据 */protected void parseData(String result) {//使用Gson解析Gson gson = new Gson();//第一个参数是数据,第二个参数是要转化成什么对象mNewsData = gson.fromJson(result, NewsData.class);System.out.println("解析结果:" + mNewsData);// 刷新测边栏的数据,利用MainActivity获取到左侧边栏的数据MainActivity mainUi = (MainActivity) mActivity;//获取到左侧边栏的对象LeftMenuFragment leftMenuFragment = mainUi.getLeftMenuFragment();//设置网络数据leftMenuFragment.setMenuData(mNewsData);}}
Json解析的数据NewsData.java
package com.ldw.news.domain;import java.util.ArrayList;/* * 网络分类信息的封装 * 各个字段的名名字需要一直,方便Gson解析 */public class NewsData {public int retcode;//返回值public ArrayList<NewsMenuData> data;//字段数据//data下面又有一组4个数据// 侧边栏数据对象public class NewsMenuData {public String id;public String title;public int type;public String url;//解析children的数据public ArrayList<NewsTabData> children;@Overridepublic String toString() {return "NewsMenuData [title=" + title + ", children=" + children+ "]";}}// 新闻页面下11个子页签的数据对象public class NewsTabData {public String id;public String title;public int type;public String url;@Overridepublic String toString() {return "NewsTabData [title=" + title + "]";}}@Overridepublic String toString() {return "NewsData [data=" + data + "]";}}
0 0
- 161.n1-解析json中的数据传递给左边的侧边栏
- 160.n1-解析json中的数据
- 162.n1-左侧边栏数据的初始化
- struts2传递json数据给ajax解析
- 155.n1-Sliding menu的使用,创建侧边栏
- 156.n1-fragment创建有侧边栏的MainActivity
- http方式传递数据,JSON数据的解析等
- jsp生成json并传递给前台html解析后显示传递的信息
- Java通过Json传递数据给JavaScript
- Android数据传递中json的生成和解析
- 关于数组型的json数据传递与解析
- 网络数据传递之 Json数据解析
- 侧边栏高度自适应左边内容
- Json的传递与解析
- hibernate传递给前台json数据的时候有些数据不匹配的解决方法
- 利用json-lib给前台传递json数据
- 我答知乎:网页的侧边栏应该放在左边还是右边?
- Ubuntu 文件夹丢失左边的侧边栏(设备 计算机 网络) 解决办法
- 几种云笔记插入代码的使用体验对比
- org.hibernate.MappingException: Unknown entity错误
- Hibernate_二级缓存1_初步使用
- C/C++之回调函数
- js中的数据类型
- 161.n1-解析json中的数据传递给左边的侧边栏
- 等直杆的纵向振动固有模态
- 利用Highcharts创建SVG图片并转为PNG(前端页面)
- CentOS7 变更默认主机名bogon
- ffmpeg之入门---》编译
- 《大型网站技术架构》网站的高性能架构及优化
- Effective Java读书笔记十五(Java Tips.Day.15)
- java 中访问控制符
- c 等差数列应用arranging coins 多种实现方法