游标和XML解析

刷新网址 http://blog.csdn.net/lmj623565791/article/details/38238749

方法一:

  用RadioGroup写XML文件时

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <RadioGroup
        android:id="@+id/group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/btn_1"
            android:paddingLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:text="资讯" />

        <RadioButton
            android:id="@+id/btn_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:paddingLeft="10dp"
            android:text="热点" />

        <RadioButton
            android:id="@+id/btn_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:paddingLeft="10dp"
            android:text="博客" />

        <RadioButton
            android:id="@+id/btn_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingLeft="10dp"
            android:button="@null"
            android:text="推荐" />
    </RadioGroup>

    <LinearLayout
        android:id="@+id/line"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/group" >
    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/line" >
    </android.support.v4.view.ViewPager>

</RelativeLayout>

Activity是

package com.example.youbiao;

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

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class MainActivity extends FragmentActivity implements OnClickListener {
    private int width;
    private ViewPager vp;
    private RadioGroup group;
    private String[] column = new String[] { "资讯", "热点", "博客", "推荐" };
    private RadioButton btn_1;
    private RadioButton btn_2;
    private RadioButton btn_3;
    private RadioButton btn_4;
    private LinearLayout line;

    private List<String> str = Arrays
            .asList("http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=",
                    "http://www.oschina.net/action/api/news_list?catalog=4&pageSize=10&show=week&pageIndex=",
                    "http://www.oschina.net/action/api/blog_list?type=latest&pageSize=10&pageIndex=",
                    "http://www.oschina.net/action/api/blog_list?type=recommend&pageSize=10&pageIndex=");
    private ArrayList<Fragment> list_fragment;

    private ArrayList<TextView> list_tv;

    private ArrayList<RadioButton> list_btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DisplayMetrics outMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
        width = outMetrics.widthPixels;

        init();

        // 初始化导航
        setColumn();
        // 为vp设置fragment页面
        setFragment();
        // 为vp设置适配器
        FragmentManager fm = getSupportFragmentManager();
        vp.setAdapter(new MyPagerAdapter(fm, list_fragment));
        // 设置文字颜色
        setTextClo(vp.getCurrentItem());
        // 设置游标显示
        setYouBiao(vp.getCurrentItem());
        vp.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                // 设置文字颜色
                setTextClo(arg0);
                // 设置游标显示
                setYouBiao(arg0);
            }

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

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });
    }

    private void setYouBiao(int arg0) {
        // TODO Auto-generated method stub
        // 获取当前页面的游标
        TextView textView = list_tv.get(arg0);

        // 将当前的游标显示
        textView.setVisibility(View.VISIBLE);

        // 将其他的游标隐藏
        for (int i = 0; i < list_tv.size(); i++) {
            TextView textView2 = list_tv.get(i);

            if (textView2 != textView) {
                textView2.setVisibility(View.INVISIBLE);
            }
        }
    }

    private void setTextClo(int p) {
        // TODO Auto-generated method stub
        RadioButton radioButton = list_btn.get(p);
        radioButton.setGravity(Gravity.CENTER);
        radioButton.setTextColor(Color.GREEN);
        for (int i = 0; i < list_btn.size(); i++) {
            RadioButton radioButton2 = list_btn.get(i);
            if (radioButton2 != radioButton) {
                radioButton2.setTextColor(Color.BLACK);
            }
        }
    }

    private void setFragment() {
        // TODO Auto-generated method stub
        list_fragment = new ArrayList<Fragment>();
        for (int i = 0; i < column.length; i++) {
            // 创建fragment对象
            MyFragment myFragment = new MyFragment(str.get(i), i);
            list_fragment.add(myFragment);
        }
    }

    private void setColumn() {
        // TODO Auto-generated method stub
        // 创建集合对象
        list_tv = new ArrayList<TextView>();
        for (int i = 0; i < 4; i++) {
            TextView tv = new TextView(this);
            tv.setBackgroundColor(Color.GREEN);
            tv.setGravity(Gravity.CENTER);
            LinearLayout.LayoutParams params_1 = new LayoutParams(width / 4, 4);
            tv.setVisibility(View.INVISIBLE);
            line.addView(tv, params_1);
            // 收集textview,即游标
            list_tv.add(tv);

        }
    }

    private void init() {
        // TODO Auto-generated method stub
        group = (RadioGroup) findViewById(R.id.group);
        btn_1 = (RadioButton) findViewById(R.id.btn_1);
        btn_2 = (RadioButton) findViewById(R.id.btn_2);
        btn_3 = (RadioButton) findViewById(R.id.btn_3);
        btn_4 = (RadioButton) findViewById(R.id.btn_4);

        btn_1.setOnClickListener(this);
        btn_2.setOnClickListener(this);
        btn_3.setOnClickListener(this);
        btn_4.setOnClickListener(this);
        vp = (ViewPager) findViewById(R.id.vp);
        line = (LinearLayout) findViewById(R.id.line);

        list_btn = new ArrayList<RadioButton>();
        list_btn.add(btn_1);
        list_btn.add(btn_2);
        list_btn.add(btn_3);
        list_btn.add(btn_4);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btn_1:
            vp.setCurrentItem(0);
            break;

        case R.id.btn_2:
            vp.setCurrentItem(1);
            break;

        case R.id.btn_3:
            vp.setCurrentItem(2);
            break;

        case R.id.btn_4:
            vp.setCurrentItem(3);
            break;

        default:
            break;
        }
    }

}
Vo包是  网址是 http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=

package com.example.youbiao;

import java.io.Serializable;
import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("oschina")
public class Bean implements Serializable {
     public String catalog;
     public String newsCount;
     public String pagesize;
     public Newslist newslist;
    
     @XStreamAlias("newslist")
     public class Newslist implements Serializable{
         @XStreamImplicit(itemFieldName="news")
         public List<News> news;
     }
     public class News implements Serializable{
         public String id;
         public String title;
         public String body;
         public String commentCount;
         public String author;
         public String authorid;
         public String pubDate;
         public String url;
         public Type newstype;
     }
     @XStreamAlias("newstype")
     public class Type implements Serializable{
         public String type;
         public String authoruid2;
         public String eventurl;
         public String attachment;
     }
    
}

Fragment是

package com.example.youbiao;

import java.util.List;

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.youbiao.Bean.News;
import com.example.youbiao.Blog.BlogEntity;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
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 com.thoughtworks.xstream.XStream;

public class MyFragment extends Fragment {

    private String url;
    private int position;
    private BeanBaseAdapter adapter;
    private BlogBaseAdapter blogadapter;
    private int num;
    private Handler mhandler;
    private List<News> list;
    private List<BlogEntity> lists;
    private PullToRefreshListView mPullRefreshListView;

    public MyFragment(String url, int position) {
        super();
        this.url = url;
        this.position = position;
    }

    @SuppressWarnings("unchecked")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment, null);
        mhandler = new Handler();

        Log.i("aaa", position+"");
        getdata(url);
        mPullRefreshListView = (PullToRefreshListView)view. findViewById(R.id.pull_refresh_list);  
        mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2() {

            @Override
            public void onPullDownToRefresh(PullToRefreshBase refreshView) {
                // TODO Auto-generated method stub
                mhandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        String u=url+num;
                        num++;
                        getdata(u);
                        onLoad();
                        mPullRefreshListView.onRefreshComplete();  
                    }
                }, 2000);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase refreshView) {
                // TODO Auto-generated method stub
                mhandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        String u=url+num;
                        num+=2;
                        getdataflush(u);
                        onLoad();
                        mPullRefreshListView.onRefreshComplete();  
                    }

                }, 2000);
            }
        });
        return view;
    }
    
    private void getdataflush(String u) {
        // TODO Auto-generated method stub
        HttpUtils httpUtils=new HttpUtils();
        httpUtils.send(HttpMethod.GET, u, 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
                XStream stream=new XStream();
                if (position==0||position==1) {
                    stream.processAnnotations(Bean.class);
                    Bean bean = (Bean) stream.fromXML(arg0.result);
                    List<News> list1 = bean.newslist.news;
                    list.addAll(list1);
                    adapter.notifyDataSetChanged();
                }else if(position==2||position==3){
                    stream.processAnnotations(Blog.class);
                    Blog blog = (Blog) stream.fromXML(arg0.result);
                    List<BlogEntity> lists1 = blog.blogs.blog;
                    lists.addAll(lists1);
                    blogadapter.notifyDataSetChanged();
                }
            }
        });
    }
    

    private void getdata(String url2) {
        // TODO Auto-generated method stub
        HttpUtils httpUtils=new HttpUtils();
        httpUtils.send(HttpMethod.GET, url2, 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
                XStream stream=new XStream();
                if (position==0||position==1) {
                    stream.processAnnotations(Bean.class);
                    Bean bean = (Bean) stream.fromXML(arg0.result);
                    list = bean.newslist.news;
                    adapter = new BeanBaseAdapter(getActivity(),list);
                    mPullRefreshListView.setAdapter(adapter);
                }else if(position==2||position==3){
                    stream.processAnnotations(Blog.class);
                    Blog blog = (Blog) stream.fromXML(arg0.result);
                    lists = blog.blogs.blog;
                    Log.i("aaa", lists.toString());
                    blogadapter = new BlogBaseAdapter(getActivity(),lists);
                    mPullRefreshListView.setAdapter(blogadapter);
                }
            }
        });
    }
    private void onLoad(){
         String label = DateUtils.formatDateTime(  
                 getActivity(),  
                 System.currentTimeMillis(),  
                 DateUtils.FORMAT_SHOW_TIME  
                         | DateUtils.FORMAT_SHOW_DATE  
                         | DateUtils.FORMAT_ABBREV_ALL);  
         // 显示最后更新的时间  
         mPullRefreshListView.getLoadingLayoutProxy()  
                 .setLastUpdatedLabel(label);
    }

}

Fragment适配器是

package com.example.youbiao;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class MyPagerAdapter extends FragmentPagerAdapter{

    private List<Fragment> list;

    public MyPagerAdapter(FragmentManager fm,List<Fragment> list) {
        super(fm);
        // TODO Auto-generated constructor stub
        this.list=list;
    }

    @Override
    public Fragment getItem(int arg0) {
        // TODO Auto-generated method stub
        return list.get(arg0);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

}

适配器是

package com.example.youbiao;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.youbiao.Bean.News;

public class BeanBaseAdapter extends BaseAdapter {
    Context context;
    List<News> list;
    public BeanBaseAdapter(Context context, List<News> list) {
        // TODO Auto-generated constructor stub
        this.context=context;
        this.list=list;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return list.get(arg0);
    }

    @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
        ViewHolder vh;
        if(convertView==null){
            convertView=LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_2, null);
            vh=new ViewHolder();
            vh.tv1=(TextView) convertView.findViewById(android.R.id.text1);
            vh.tv2=(TextView) convertView.findViewById(android.R.id.text2);
            convertView.setTag(vh);
        }else{
            vh=(ViewHolder) convertView.getTag();
        }
        vh.tv1.setText(list.get(position).title);
        vh.tv2.setText(list.get(position).body);
        return convertView;
    }
    class ViewHolder{
        TextView tv1,tv2;
    }
}

方法二   建议网址 http://www.jianshu.com/p/a2263ee3e7c3  

package com.example.mouth;

import java.util.Arrays;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.Toast;

import com.viewpagerindicator.TabPageIndicator;

public class MainActivity extends FragmentActivity {
    private ViewPager mPager;
    private List<String> url_list = Arrays
            .asList("http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=",
                    "http://www.oschina.net/action/api/news_list?catalog=4&pageSize=10&show=week&pageIndex=",
                    "http://www.oschina.net/action/api/blog_list?type=latest&pageSize=10&pageIndex=",
                    "http://www.oschina.net/action/api/blog_list?type=recommend&pageSize=10&pageIndex=");
    private static final String[] TITLE = new String[] {"咨询", "热点", "博客","推荐"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findId();
    }
    private void findId() {
        mPager = (ViewPager) findViewById(R.id.pager);
        // ViewPager的adapter
        FragmentPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(adapter);
        // 实例化TabPageIndicator然后设置ViewPager与之关联
        TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
        indicator.setViewPager(mPager);

        // 如果我们要对ViewPager设置监听,用indicator设置就行了
        indicator.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });

    }

    class MyPagerAdapter extends FragmentPagerAdapter {

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
            // TODO Auto-generated constructor stub
        }

        @Override
        public Fragment getItem(int position) {
            // 新建一个Fragment来展示ViewPager item的内容,并传递参数
            BaseFragment fragment = new BaseFragment(url_list.get(position),
                    position);
            return fragment;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return TITLE[position % TITLE.length];
        }

        @Override
        public int getCount() {
            return TITLE.length;
        }
    }
}

原文地址:https://www.cnblogs.com/Zb759260513/p/5353836.html