文档章节

xml解析之fragment包(20160729)

小情绪在洒脱
 小情绪在洒脱
发布于 2016/07/29 10:06
字数 579
阅读 3
收藏 0
点赞 0
评论 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
海淀
程序员
Servlet 3 新特性之可插性支持

如果说 3.0 版本新增的注解支持是为了简化 Servlet/ 过滤器 / 监听器的声明,使得 web.xml 变为可选配置,新增的可插性 (pluggability) 支持则将 Servlet 配置的灵活性提升到了新的高度。使用...

谢随安
2017/11/14
0
0
android -智慧北京

主页面做出slidingmenu效果 1,引入相应library eclipse:直接import到项目中,与导入项目类似。用需要的项目绑定:properrise->android->add http://www.csdn.net/article/2013-05-03/28151...

LizRose
2016/04/11
146
0
Android Fragment 完全解析

我们都知道,Android 上的界面展示都是通过Activity实现的,Activity 实在是太常用了,这里就不再赘述。但 Activity 有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因...

iBazinga
2016/11/25
9
0
Fragment实战使用之—— 一个activity管理多个fragment

Fragment相信大家并不陌生了,3.0后出来的碎片。但是听得多不代表用得也多,尤其用fragment替代activity的使用。 如果大家想对Fragment有一个详细的了解可以阅读这篇文章Android Fragment完全...

veidy
2015/03/23
0
3
Android学习第一章第一节android学习路线图

Java基础。 web开发:servlet,jsp和html. 服务器端开发:jdbc结合mysql的使用。 android入门介绍。 android常用布局。 android常用的UI控件。ListView,Fragment. android文件操作,包货数据库...

adustdu2015
2016/01/14
32
0
Android Core

我们在开发Android应用的时候大多数界面现在使用Fragment,以达到解耦和高复用的目的。 Core框架旨在帮助Android开发者快速创建应用,以及方便的切换页面;现在主流的app界面架构都是导航栏和...

lianjiao
2015/12/28
969
0
XXXfragment that is not a fragment错误,fragment认不出来

时间 2014-06-05 11:10:59 CSDN博客 原文 http://blog.csdn.net/modiziri/article/details/28600645 主题 XML 安卓开发 要注意的是fragment其实是有两个版本的,一个是 import android.suppo...

魅影骑士360
2015/12/05
25
0
Android Fragment的使用

可以分为下面的几部分: 使用支持库 创建一个Fragment 创建一个动态UI 多个Fragment之间的通信 1、使用支持库 如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容。 如果您的应用使...

娶到笨笨
2014/04/07
0
3
Fragment的全面解析

Fragment 1. Fragment概要介绍 Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragmen...

android-key
2016/11/21
18
0
Android之Fragment

目录: 一. Fragment的生命周期 二.静态加载Fragment 三.动态加载Fragment <用的V4包> 四.Activity向Fragment通信 五.Fragment向Activity通信 六.Fragment中更新activity中的ui组件 七.Frag...

我家的猫跳楼了
2015/09/09
20
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Win10专业版安装GIT后使用Git Bash闪退解决办法

百度后把过程和最终解决办法记录下来: 百度首先出来的解决办法如下: 来自:https://segmentfault.com/q/1010000012722511?sort=created 重启电脑 重新安装 安装到C盘 尝试网上的教程 \Git...

特拉仔
11分钟前
0
0
设计模式

1.装饰器模式 概念 允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,以达到特定的目的。 实现 增加一个修饰类包裹原来的...

EasyProgramming
25分钟前
1
0
用python2和opencv进行人脸识别

一、安装cv2 sudo apt-get install python-opencv opencv-data 二、 Haar特征分类器 Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。 ...

wangxuwei
25分钟前
0
0
python模板中循环字典

{% for k,v in user.items %} {{ k}} {{ v}} {% endfor %}

南桥北木
54分钟前
0
0
Java8系列之重新认识HashMap

简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示: 下面针对各个实现类...

HOT_POT
57分钟前
0
0
获取调用方的className

/** * 获取调用方的class * @return */private static String getInvoke() { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); S......

iborder
今天
0
0
深入了解一下Redis的内存模型!

一前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符...

Java填坑之路
今天
1
0
从实践出发:微服务布道师告诉你Spring Cloud与Spring Boot他如何选择

背景 随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加。在这个背景下,平台的技术架构也完成了从传统的单体应用到微...

老道士
今天
1
0
大数据学习的各个阶段

第一阶段:Linux课程讲解Linux基础操作,讲的是在命令行下进行文件系统的操作,这是Hadoop学习的基础,后面的所有视频都是基于linux操作的。鉴于很多学员没有linux基础,特增加该内容,保证零linux...

董黎明
今天
0
0
CVE-2013-0077 堆溢出分析

找了很久才发现这个环境比较容易搭建分析... 环境: 系统---Win XP SP3 漏洞程序:QQPlayer 3.7.892.400 出错DLL:quartz.dll 6.5.2600.5512 调试工具:x32db+gflag.exe 过程: 首先gflag设置...

Explorer0
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部