刷新网址 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;
}
}
}