-----------------------------------------------------------------------------------------------------------
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));
}
-----------------------------------------------------------------------------------------------------------
- log4j源码解析-文件解析
承接前文log4j源码解析,前文主要介绍了log4j的文件加载方式以及Logger对象创建.本文将在此基础上具体看下log4j是如何解析文件并输出我们所常见的日志格式 附例 文件的加载方式,我们就选举 ...
- 《自己动手写框架2》:用200行的DBF解析器来展示良好架构设计
因为工作关系.须要工作其中,须要读取DBF文件.找了一些DBF读取开源软件,要么是太过庞大,动不动就上万行.要么是功能有问题,编码,长度,总之是没有找到一个很爽的. 在万般无奈之下,我老人家怒从心头起 ...
- android中解析文件的三种方式
android中解析文件的三种方式 好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...
- 使用Scanner来解析文件
前面的流是全部流进来再处理,空间换取时间 我们用Scanner来解析文件,先处理再输入数据,时间换取空间 两种方法 Scanner scanner1=new Scanner(file1); for(; ...
- SAX解析文件
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import ja ...
- pdf流文件的展示、下载、打印;html转为pdf
背景:合同(后台返回pdf流文件)展示.下载.打印,基于angular4 场景区分: 1.checkout页面 —— post接口,入参为offering.shippingInfo.invoice等( ...
- java解析文件
遇到两个小坑: 1.使用String.split,部分分隔符需要转义:https://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.htm ...
- Linux本地解析文件/etc/hosts说明【原创】
windows的域名本地解析文件hosts是可以一个域名对多个IP,如果有一个IP有问题,可以去解析到其他IP Linux的本地解析文件/etc/hosts,是否也可以这样呢.下面做了个测试 先看一下 ...
- Java 上传解压zip文件,并且解析文件里面的excel和图片
需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...
- Java的Json解析包FastJson使用
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser. ...
- Python语言常见异常错误类型
在运行或编写一个程序时常会遇到错误异常,这时python会给你一个错误提示类名,告诉出现了什么样的问题(Python是面向对象语言,所以程序抛出的异常也是类).能很好的理解这些错误提示类名所代表的意思 ...
- Windows10系统如何更改程序的默认安装目录?
Windows10系统如何更改程序的默认安装目录? 在Windows10系统的使用中,软件程序的默认安装目录是:C:\Program Files\...或者C:\Program Files(x86)\ ...
- 数据库如何生成sql语句
以SQL SERVER 2008为例子. 1.启动客户端管理器,连接到要生成脚本的数据库. 2.在左边的”对象资源管理器“中,右键选择该数据库打开菜单.选择”任务“,”生成脚本“菜单,打开对话框. 3 ...
- Clang与libc++abi库安装
系统ubuntu64位 Clang4.0 参考: 1 https://github.com/yangyangwithgnu/use_vim_as_ide#0.1 其中 第7章 工具链集成 2. htt ...
- Bill的挑战(bzoj 1879)
Description Input 本题包含多组数据. 第一行:一个整数T,表示数据的个数. 对于每组数据: 第一行:两个整数,N和K(含义如题目表述). 接下来N行:每行一个字符串. Output ...
- Newtonsoft.Json 版本冲突解决
在做asp.net MVC 开发时,因为引用的dll 中使用了更高版本的 Newtonsoft.Json ,导致运行时发生错误, 查资料说是因为webApi使用了Newtonsoft.Json 导致了 ...
- 基于EasyUI Treegrid的权限管理资源列表
1. 前言 最近在开发系统权限管理相关的功能,主要包含用户管理,资源管理,角色管理,组类别管理等小的模块.之前的Web开发中也用过jQueryEasyUI插件,感觉这款插件简单易用,上手很快.以前用到 ...
- *** $CI =& get_instance() 用法:关于CodeIgniter中get_instance() 函数
使用场景: 注意 get_instance 的使用场景,这个方法并不是用在控制器中的.而是用在控制器外面,比如类库中,想操作 CI 超级对象的时候,超级对象实际上就是当前控制器的实例. 你随便下个CI ...
- Good Bye 2016 - A
题目链接:http://codeforces.com/contest/750/problem/A 题意:有n场比赛要打,第i场比赛需要花i*5分钟来完成,比赛从20:00开始.然后新年派对24:00开 ...