//项目效果:

//设置ActionBar导航:

-----------------------------------------------------------------------------------------------------------

MainActivi.note

MainActivity:

public class MainActivity extends FragmentActivity implements TabListener {
    private FragmentManager fm;
 
    @SuppressLint("NewApi")
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar bar = getActionBar();
        bar.setTitle("名师");
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.addTab(bar.newTab().setText("全部").setTabListener(this));
        bar.addTab(bar.newTab().setText("考研").setTabListener(this));
        bar.addTab(bar.newTab().setText("公务员").setTabListener(this));
        bar.addTab(bar.newTab().setText("教师资格证").setTabListener(this));
        bar.addTab(bar.newTab().setText("四六级").setTabListener(this));
        bar.setDisplayHomeAsUpEnabled(true);
    }
 
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            break;
 
        default:
            break;
        }
        return super.onMenuItemSelected(featureId, item);
    }
 
    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
 
    }
 
    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        fm = getSupportFragmentManager();
        android.support.v4.app.FragmentTransaction bt1 = fm.beginTransaction();
        switch (tab.getPosition()) {
        case 0:
            bt1.replace(R.id.fl, new F1());
            break;
        case 1:
            bt1.replace(R.id.fl, new F2());
            break;
 
        case 2:
            bt1.replace(R.id.fl, new F3());
            break;
        case 3:
            bt1.replace(R.id.fl, new F4());
            break;
 
        case 4:
            bt1.replace(R.id.fl, new F5());
            break;
 
        default:
            break;
        }
        bt1.commit();
    }
 
    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
 
    }
}
 
 

解析对象:

public class News {
public String resultCode;
public String resultMsg;
public ArrayList<MyData> resultData;
public class MyData{
    public ArrayList<MyList> course_list;
    public String cover_url;
    public String name;
    public String type_id;
}
public class MyList{
    public String couse_id;
    public String img_url;
    public String students;
    public String teacher_id;
    public String teacher_name;
    public String title;
}
-----------------------------------------------------------------------------------------------------------
工具类:

public class StreamUtils {
public static String StreamToStr(InputStream inputStream) throws IOException{
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    byte [] buffer =new byte[1024];
    int len=0;
    while((len=inputStream.read(buffer))!=-1){
        outputStream.write(buffer, 0, len);
 
    }
    return outputStream.toString();
}
public static News analyze(Context context) {
    // TODO Auto-generated method stub
    try {
        InputStream open = context.getAssets().open("index.json");
        String json = StreamUtils.StreamToStr(open);
        Gson gson = new Gson();
        News news = gson.fromJson(json, News.class);
        return news;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}
}
-----------------------------------------------------------------------------------------------------------
————————适配器——————————

第一个:
public MyAdapter(FragmentActivity activity, List<MyList> ml) {
        // TODO Auto-generated constructor stub
        this.activity=activity;
        this.ml=ml;
    }
 
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return ml.size();
    }
 
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return ml.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View view = View.inflate(activity, R.layout.lv_item, null);
        TextView tv_name=    (TextView) view.findViewById(R.id.tv_name);
    TextView tv_details=    (TextView) view.findViewById(R.id.tv_details);
    tv_name.setText(ml.get(position).teacher_name);
    tv_details.setText(ml.get(position).title);
        return view;
    }
 
第二个:
public MytAdapter(FragmentActivity fragmentActivity, MyData myData) {
        // TODO Auto-generated constructor stub
        this.context=fragmentActivity;
        this.myData=myData;
    }
 
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return myData.course_list.size();
    }
 
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return myData.course_list.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View view = View.inflate(context, R.layout.lv_item, null);
    TextView name=    (TextView) view.findViewById(R.id.tv_name);
    TextView details=    (TextView) view.findViewById(R.id.tv_details);
    name.setText(myData.course_list.get(position).teacher_name);
    details.setText(myData.course_list.get(position).title);
        return view;
    }
-----------------------------------------------------------------------------------------------------------
---------Fragment-------
全部:
public class F1 extends Fragment {
private List<MyList> ml;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fl_item,container, false);
    return view;
}
@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        News news = StreamUtils.analyze(getActivity());
    ml = new ArrayList<MyList>();
    for (MyData md : news.resultData) {
        for(MyList cl:md.course_list){
            ml.add(cl);
        }
    }
ListView lv=    (ListView) view.findViewById(R.id.lv);
lv.setAdapter(new MyAdapter(getActivity(),ml));
        super.onActivityCreated(savedInstanceState);
    }
}
分类:
@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        News news = StreamUtils.analyze(getActivity());
//根据下标获得对象
        MyData myData = news.resultData.get(0);
        ListView lv = (ListView) view.findViewById(R.id.lv);
        lv.setAdapter(new MytAdapter(getActivity(), myData));
    }
-----------------------------------------------------------------------------------------------------------

解析文件+AcitonBar展示:的更多相关文章

  1. log4j源码解析-文件解析

    承接前文log4j源码解析,前文主要介绍了log4j的文件加载方式以及Logger对象创建.本文将在此基础上具体看下log4j是如何解析文件并输出我们所常见的日志格式 附例 文件的加载方式,我们就选举 ...

  2. 《自己动手写框架2》:用200行的DBF解析器来展示良好架构设计

    因为工作关系.须要工作其中,须要读取DBF文件.找了一些DBF读取开源软件,要么是太过庞大,动不动就上万行.要么是功能有问题,编码,长度,总之是没有找到一个很爽的. 在万般无奈之下,我老人家怒从心头起 ...

  3. android中解析文件的三种方式

    android中解析文件的三种方式     好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...

  4. 使用Scanner来解析文件

    前面的流是全部流进来再处理,空间换取时间 我们用Scanner来解析文件,先处理再输入数据,时间换取空间 两种方法 Scanner scanner1=new Scanner(file1); for(; ...

  5. SAX解析文件

    import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import ja ...

  6. pdf流文件的展示、下载、打印;html转为pdf

    背景:合同(后台返回pdf流文件)展示.下载.打印,基于angular4 场景区分: 1.checkout页面 —— post接口,入参为offering.shippingInfo.invoice等( ...

  7. java解析文件

    遇到两个小坑: 1.使用String.split,部分分隔符需要转义:https://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.htm ...

  8. Linux本地解析文件/etc/hosts说明【原创】

    windows的域名本地解析文件hosts是可以一个域名对多个IP,如果有一个IP有问题,可以去解析到其他IP Linux的本地解析文件/etc/hosts,是否也可以这样呢.下面做了个测试 先看一下 ...

  9. Java 上传解压zip文件,并且解析文件里面的excel和图片

    需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...

随机推荐

  1. varchar后面是否定义长度,还是有区别的

    ' ' PRINT @year 结果是:2 ) ,' ' PRINT @year 结果是:2015 varchar是否定义长度,还是有区别的,不定义长度的时候,并非我想象中按照实际赋值自动填充,似乎默 ...

  2. 自动加载dll,加载dll中程序集的信息。

    自动加载程序集,解析程序集中的方法. private static object Invoke(string lpFileName, string Namespace, string ClassNam ...

  3. 安卓手机 虚拟键盘输入用 position:fixed解决 !!!

    下面 主要代码 方便看. 样式 <style> *{ margin:0; padding:0; } html{ height:100%;/*关键代码*/ } body{ height:10 ...

  4. PEtools

    // PETools.cpp : Defines the entry point for the console application.// #include "stdafx.h" ...

  5. window.print() 打印页面部分内容的方法

    用 JavaScript 实现页面数据的打印 : 主要是用到了一个 print() 函数 , 该函数将会打印整个 web 页面 body 内的所有 html 数据 ! 使用方法为 window.pri ...

  6. AE+C# 版本更新问题 命名空间“ESRI”中不存在类型或命名空间名称“Arcgis”(是缺少程序集引用吗?)

    解决办法: 1 引用 将下图中解决方案->引用中带感叹号的已用移除,然后添加新的.因为不同版本用的.dll不同,因此需要删除,然后重新加载. 如果是系统库文件, 直接在.NET下头添加,如果是自 ...

  7. 前端自学vs跟大神系统学?你看着办

    前端自学vs跟大神系统学?你看着办 一名广告专业学生,在大三的时候对于广告行业的前景不是很看好,转而自学web前端,刚开始接触的前端语言是html(html应该不算编程语言),上手很容易,在w3csh ...

  8. centos7.0 下安装jdk1.8

    centos7.0这里安装jdk1.8采用yum安装方式,非常简单. 1.查看yum库中jdk的版本 [root@localhost ~]# yum search java|grep jdk 2.选择 ...

  9. MFC 静态文本的自绘 空心字的实现

    想在对话框里,显示几个字是很简单的,只要用静态文本的输出就可以了.然而有时候我们需要显示特效的字,我们希望显示的文字就像Word里的艺术字一样,看起来美观.这时我们可以重写CStatic类.用Draw ...

  10. 14.linux按键驱动程序(一)

    按键驱动程序 本文学习主要包含按键硬件的实现.中断分层管理.按键定时器去抖.阻塞性驱动程序设计.这里面需要使用到混杂设备驱动和中断处理程序的内容. 一.创建按键混杂设备驱动模型 int key_ope ...