如何使用xstream解析网络上请求的xml文件,解析并展示_偶像宣言的博客-程序员秘密

技术标签: 使用xstream解析网络上请求的xml  listview优化  上拉下载  解析并展示  viewpager  

//主界面

package com.example.mounth_test;


import java.util.ArrayList;
import java.util.List;


import com.example.adapter.FragAdapter;


import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RadioButton;


public class MainActivity extends FragmentActivity implements OnClickListener,OnPageChangeListener{
//定义控件
private RadioButton radio1,radio2,radio3,radio4;
private ViewPager mViewPager;
private List<Fragment> fragments;
//定义单个fragment控件
private ContentFragment01 mContentFragment01;
private ContentFragment02 mContentFragment02;
private ContentFragment03 mContentFragment03;
private ContentFragment04 mContentFragment04;


private FragAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//加载fragment控件
intodata();
//获取控件id
inteview();
//设置默认值
mViewPager.setCurrentItem(0);
select(0);
}


     private void intodata() {
// TODO Auto-generated method stub
fragments=new ArrayList<Fragment>();
fragments.add(new ContentFragment01());
fragments.add(new ContentFragment02());
fragments.add(new ContentFragment03());
fragments.add(new ContentFragment04());
}

//该方法,,获取控件id
private void inteview() {
// TODO Auto-generated method stub
mViewPager=(ViewPager) findViewById(R.id.myviewpager);
radio1=(RadioButton) findViewById(R.id.radio_btn1);
radio2=(RadioButton) findViewById(R.id.radio_btn2);
radio3=(RadioButton) findViewById(R.id.radio_btn3);
radio4=(RadioButton) findViewById(R.id.radio_btn4);
radio1.setOnClickListener(this);
radio2.setOnClickListener(this);
radio3.setOnClickListener(this);
radio4.setOnClickListener(this);
mViewPager.setOnPageChangeListener(this);
adapter=new FragAdapter(getSupportFragmentManager(),fragments);
//添加到适配器上
mViewPager.setAdapter(adapter);
}

/**
 * 
 * 点击titile 监听
 * @param v
 */
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
  switch (v.getId()) {
case R.id.radio_btn1:
mViewPager.setCurrentItem(0);
break;
case R.id.radio_btn2:
mViewPager.setCurrentItem(1);
break;
case R.id.radio_btn3:
mViewPager.setCurrentItem(2);
break;
case R.id.radio_btn4:
mViewPager.setCurrentItem(3);
break;


  }
}


//viewpager页面滑动监听,,滑动页面,,radiobutton的字体颜色变为绿色
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

}

@Override
public void onPageSelected(int arg0) {
 select(arg0);
 
   }

//滑动页面,改变字体颜色
private void select(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case 0:
radio1.setTextColor(Color.GREEN);
radio2.setTextColor(Color.BLACK);
radio3.setTextColor(Color.BLACK);
radio4.setTextColor(Color.BLACK);
break;
case 1:
radio1.setTextColor(Color.BLACK);
radio2.setTextColor(Color.GREEN);
radio3.setTextColor(Color.BLACK);
radio4.setTextColor(Color.BLACK);
break;
case 2:
radio1.setTextColor(Color.BLACK);
radio2.setTextColor(Color.BLACK);
radio3.setTextColor(Color.GREEN);
radio4.setTextColor(Color.BLACK);
break;
case 3:
radio1.setTextColor(Color.BLACK);
radio2.setTextColor(Color.BLACK);
radio3.setTextColor(Color.BLACK);
radio4.setTextColor(Color.GREEN);
break;
}
   }
}

//单个fragment控件

package com.example.mounth_test;

import java.util.List;
import com.example.adapter.MyAdapter;
import com.example.vo.New;
import com.example.vo.News;
import com.example.vo.NewsObject;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.db.sqlite.CursorUtils.FindCacheSequence;
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 com.thoughtworks.xstream.XStream;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;


public class ContentFragment01 extends Fragment {

//定义控件
private PullToRefreshListView mPullRefreshListView;
private List<News> list_new;

//定义适配器
private MyAdapter adapter;
int index=1;
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// TODO Auto-generated method stub

View view=LayoutInflater.from(getActivity()).inflate(R.layout.contentfragment, null);
//获取控件id
mPullRefreshListView=(PullToRefreshListView) view.findViewById(R.id.mylistview);
//调用联网方法
getinfo();
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// TODO Auto-generated method stub
String label = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),
DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);//3.刷新界面处理代理,显示新的时间
//定义联网请求方法
getinfo();
}
});

//5.设置上拉加载处理
     mPullRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
    
@Override
public void onLastItemVisible() {
getinfo();
}
     });
return view;
}

/**


*联网请求。。获取网络上的xml文件,解析并展示

*/
private void getinfo() {
// TODO Auto-generated method stub
HttpUtils httpUtils=new HttpUtils();
//定义接口
String url="http://www.oschina.net/action/api/news_list";
httpUtils.send(HttpMethod.GET, url, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub

}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
// TODO Auto-generated method stub
String xmldata=arg0.result;
XStream xStream=new XStream();
xStream.processAnnotations(NewsObject.class);
NewsObject newsObject=(NewsObject) xStream.fromXML(xmldata);
list_new=newsObject.getNewslist().getNews();

adapter=new MyAdapter(getActivity(),list_new);
mPullRefreshListView.setAdapter(adapter);
}
});

// adapter.notifyDataSetChanged();
        index= index+1;
// Call onRefreshComplete when the list has been refreshed.
mPullRefreshListView.onRefreshComplete();
}
}

//布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    

  <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/mylistview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="#00000000"
        android:divider="#19000000"
        android:dividerHeight="4dp"
        android:fadingEdge="none"
        android:fastScrollEnabled="false"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:smoothScrollbar="true" /> 
        
</RelativeLayout>


//配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mounth_test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="14" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="PtR ListView"
             >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33996621/article/details/51034536

智能推荐

PS188——谱瑞(Parade)推动的 Type-C扩展坞红海战略_Type_C_Ken的博客-程序员秘密_ps186芯片

PS188——谱瑞(Parade)推动的 Type-C扩展坞红海战略两年前谱瑞(Parade)收购睿思科技(Fresco Logic)的时候,没有人会想到,扩展坞行业老大已经准备好主动发起价格战了。

(二)Nginx安装配置、部署前端项目_韩亮老师的博客-程序员秘密_nginx 配置前端

​1、官网下载nginx安装文件,并上传 master节点的 /mnt/tools/文件夹下下载地址:[https://nginx.org/download/nginx-1.18.0.tar.gz](https://nginx.org/download/nginx-1.18.0.tar.gz)​2、解压tar -zvxf /mnt/tools/nginx-1.18.0.tar.gz -C /mnt/training/3、配置安装模块:#进入/mnt/training/nginx-1.18

MLAG与vPC之间有什么区别?_audrey-luo的博客-程序员秘密_mlag

如今,越来越多的企业开始利用数据中心虚拟化来降低成本和简化数据流,而为了确保数据可以在数据中心和业务位置之间实现无缝传输,网络容量需求将会大大增加。为了适应这种趋势发展,业界正在寻找通过连接尽可能多的网络设备来增强网络容量的方法,例如,MLAG和vPC,这两种链路聚合技术可连接多台以太网交换机,增加网络容量。那么您了解它们吗?两者之间有何不同?本文将对此展开全面的介绍。MLAG是什么?MLAG(多机箱链路聚合)是一种启用来自主机的二层多路径以获得额外的带宽或链路弹性的非标准协议,由于该协议是一种公共

CISCO数据中心虚拟化之vPC技术和配置_achejq的博客-程序员秘密

最近在研究数据中心功能时发现CISCO有一个虚拟化技术叫vPC的技术,今天就把我研究的成果分享出来。什么是vPC(virtual port channel)?研究了大半天,其实它就是一个可以跨不同设备的port-channel技术。它的作用:可以实现网络冗余,可以跨设备进行端口聚合,增加链路带宽,当链路故障时比生成树协议收敛时间还快。下面我们就说说为什么会出现vPC技术。如上图所示

h5外卖源码php_从零搭建外卖CPS平台小程序开发_m0_56783267的博客-程序员秘密

直到看到了一个好友分享到外卖 CPS,觉得这是一个机会,不仅任何地方都可以做,而且门槛相对较低。所以我最近分析了将近 30 个外卖大号,分析了他们的引流流程,总结一下他们有哪些可以值得我们借鉴的地方。希望对大家有所启发。当然最主要的还是着手去做。外卖cps带分销返利源码源代码地址http://www.mybei.cn搭建步骤下载以上源代码到本地http://www.mybei.cn成品展示截图步骤下载以上源代码到本地http://www.mybei.cn修改为你自己的微信

随便推点

BUUCTF misc 专题(61)黑客帝国_tt_npc的博客-程序员秘密_buuctf misc 黑客

下载附件,查看txt格式的文件发现开头有点像rar格式的16进制文件头,在winhex中新建一个文件,并把数据粘进去要选择ASCII Hex的格式果然没错,保存为rar格式的文件,发现打开需要密码ARCHPR爆破出密码打开压缩包,发现了png格式的文件,用winhex打开查看发现了文件开头并不对劲这应该是jpg格式的文件,于是对文件头进行修改发现图片能打开了得到flag{57cd4cfd4e07505b98048ca106132125}...

Java 中的中文编码问题(非常详细)_CowardlyLion的博客-程序员秘密_java对中文编码

只要有跨应用数据交换的地方,都可能产生编码和解码。出现乱码问题唯一的原因都是在 char 到 byte 或 byte 到 char 转换中编码和解码的字符集不一致导致的。几个常用的类:String name = &quot;I am 君山&quot;; byte[] utf8 = name.getBytes(&quot;UTF-8&quot;);String n = new String(utf8, &quot;UTF-8&quot;);Chars...

网页中文本朗读功能开发实现_Flyo_x的博客-程序员秘密

作者:依韵https://blog.cdswyda.com/post/2017120914摘自微信公众:FrontDev前几天完成了一个需求,在网页中完成鼠标指向哪里,就用语音读出所指的文本。如果是按钮、链接、文本输入框,则还还要给出是什么的提醒。同时针对大段的文本,不能整段的去读,要按照标点符号进行断句处理。重点当然就是先获取到当前标签上的文本,再把文本转化成语音即可。标签朗读这个很简单了,只用...

Python pip install 常见问题处理_虫师魁拔的博客-程序员秘密

一、安装 python 第三方库超时安装失败日志中提示Read timed out 、 wait timeout 之类文字,这一般是由于网络等因素,导致下载等待超时。可以修改下载源,或者是延长下载等待超时时间1、修改下载源(针对部分由于国外下载源)阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/豆瓣 http://pypi.dou.

python class和class(object)用法区别-(转)_小白笑苍的博客-程序员秘密

# -*- coding: utf-8 -*-# 经典类或者旧试类class A: passa = A()# 新式类class B(object): passb = B()# python2不支持# print(A.__class__)print(a.__class__)print(type(A))print(type(a))# python2# __main__.

日语中的接打电话礼貌用语_方长存的博客-程序员秘密

1 接电话的场合& おはようございます、○○会社です。& はい、○○会社でございます。& はい、○○会社、田中がうけたまわっております。& おはようございます、○○会社、××部でございます。 2 打电话的场合& おはようございます、いつもお世话になります、○○社の铃木と申しますが。 & いつもお世话になっております、私○○社の铃木と申しますが。顾客に対して电话応

推荐文章

热门文章

相关标签