文档章节

xml解析之fragment包(20160729)

小情绪在洒脱
 小情绪在洒脱
发布于 2016/07/29 10:06
字数 579
阅读 33
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;

import com.bwie.test.R;
import com.bwie.test.adapter.MyAdapter1;
import com.bwie.test.bean.DataBean;
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;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Xml;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

public class Fragment1 extends Fragment implements IXListViewListener {

    private XListView xlistview;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, null);
        xlistview = (XListView) view.findViewById(R.id.xlistview);
        xlistview.setPullLoadEnable(true);
        xlistview.setXListViewListener(this);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        // 请求数据
        getData();
    }

    /**
     * 请求数据
     */
    private int index = 0;
    private List<DataBean> mylist = new ArrayList<DataBean>();
    private boolean isRefresh=false;
    private MyAdapter1 myadapter1;
    private void getData() {
        String path = "http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
                + index + "&pageSize=20";
        HttpUtils http = new HttpUtils();
        http.send(HttpMethod.GET, path, new RequestCallBack<String>() {

            @Override
            public void onFailure(HttpException arg0, String arg1) {
                Toast.makeText(getActivity(), "数据请求失败", 0).show();
            }

            @Override
            public void onSuccess(ResponseInfo<String> info) {
//                Toast.makeText(getActivity(), "数据请求成功", 0).show();
                String result = info.result;
                byte[] bytes = result.getBytes();
                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
                // 解析数据的方法
                List<DataBean> parelist = pareXML(bais);
                System.out.println(parelist.toString());
                if(isRefresh){
                    mylist.clear();
                }
                mylist.addAll(parelist);
                if(myadapter1==null){
                    myadapter1=new MyAdapter1(getActivity(),mylist);
                    // 为xlistview设置适配器
                    xlistview.setAdapter(myadapter1);
                }else{
                    //刷新适配器
                    myadapter1.notifyDataSetChanged();
                }
                //调用停止刷新和加载的方法
                onLoad();
            }

        });
    }

    private List<DataBean> pareXML(InputStream is) {
        List<DataBean> datalist = null;
        DataBean databean = null;
        try {
            // 创建一个解析器
            XmlPullParser parser = Xml.newPullParser();
            parser.setInput(is, "utf-8");
            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                switch (eventType) {
                case XmlPullParser.START_DOCUMENT:
                    datalist = new ArrayList<DataBean>();
                    break;
                case XmlPullParser.START_TAG:
                    // 得到子节点的名字
                    String name = parser.getName();
                    if ("news".equalsIgnoreCase(name)) {
                        databean = new DataBean();
                    } else if ("title".equalsIgnoreCase(name)) {
                        databean.setTitle(parser.nextText());
                    } else if ("body".equalsIgnoreCase(name)) {
                        databean.setBody(parser.nextText());
                    } else if ("author".equalsIgnoreCase(name)) {
                        databean.setAuthor(parser.nextText());
                    } else if ("commentCount".equalsIgnoreCase(name)) {
                        databean.setCommentCount(parser.nextText());
                    } else if ("pubDate".equalsIgnoreCase(name)) {
                        databean.setPubDate(parser.nextText());
                    }
                    break;
                case XmlPullParser.END_TAG:
                    String name1 = parser.getName();
                    if ("news".equalsIgnoreCase(name1)) {
                        datalist.add(databean);
                        databean = null;
                    }
                    break;
                }
                // 得到下一个事件的事件类型
                eventType = parser.next();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return datalist;
    }

    @Override
    public void onRefresh() {
        index=0;
        isRefresh=true;
        getData();
    }

    @Override
    public void onLoadMore() {
        index++;
        isRefresh=false;
        getData();
    }
    
    private void onLoad() {
        xlistview.stopLoadMore();
        xlistview.stopRefresh();
        xlistview.setRefreshTime("刚刚");
    }
}

2.fragment布局文件

<?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" >

    <me.maxwin.view.XListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/xlistview"
        ></me.maxwin.view.XListView>

</LinearLayout>

3.fragment关联布局文件

<?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/text_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/text_body"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/text_author"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/text_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="25dp"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/text_count"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="25dp"
            android:textSize="15sp" />
    </LinearLayout>

</LinearLayout>

小情绪在洒脱
粉丝 3
博文 18
码字总数 19251
作品 0
海淀
程序员
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6K
18
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
665
1
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
程序猿媛一:Android滑动翻页+区域点击事件

滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。文尾附注源码获取途径。 转载请保留原文出处“http://my.oschina.net/gluoyer...

花佟林雨月
2013/11/09
4.2K
1
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
7

没有更多内容

加载失败,请刷新页面

加载更多

微服务为什么选Spring Cloud?

现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚——Spring Cloud。这是...

osc_6t6cjs45
11分钟前
22
0
后缀三姐妹

目录 写在前面 前置小碎骨 后缀数组 定义 举例 倍增法构造 优化 再优化 代码 后缀树 后缀自动机 写在最后 绝对不咕 写在前面 会考虑整个与标题相关的二次创作。 什么时候有能力再说 前置小碎...

osc_7e2pw1w9
12分钟前
8
0
主题搭建-初始化

方式一# 特点# 推荐的方式 项目做的任何升级都能远程推送到你的博客 支持在线切换项目中已经集成的所有皮肤 步骤# 1.你的博客首页 -> 管理 -> 设置 2.设置博客默认皮肤为 Custom 3.使用 load...

osc_lyz4aksj
13分钟前
0
0
我的前端知识体系构建(上)

❝ 前沿:树酱君是个渣渣,梳理了下发现还是蛮多知识点不够扎实,童鞋有机会也定期给自己做个复盘和回顾,梳理自己的知识体系。再加上前端娱乐圈变化多端,以至于我们既要加强对底层基础知识...

前端试炼
15分钟前
6
0
Codeforces Round #662 Div.2 (CF1392)

有人说这场背景描述挺烂,不过我觉得还不错( A题意有点烦,建议直接去看英文原文(( 手动画图然后推个结论,挺简单的,不赘述了: /*ID: LoxilanteTime: 2020/08/07Prog: CF1393A...

osc_5l7bcj86
15分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部