一。主activity,导航加下划线要用到库
package com.example.activity;
import java.util.ArrayList;
import java.util.List;
import com.example.adapter.MyFragmentAdapter;
import com.example.fragment.MyFragment;
import com.example.fragment.MyFragment1;
import com.example.fragment.MyFragment2;
import com.example.fragment.MyFragment3;
import com.viewpagerindicator.TabPageIndicator;
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;
public class MainActivity extends FragmentActivity {
public static String title [] = {"资讯","热点","博客","推荐"};
private ViewPager vp;
private List<Fragment> list = new ArrayList<Fragment>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager(),list);
vp = (ViewPager) findViewById(R.id.pager);
vp.setAdapter(adapter);
TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(vp);
list.add(new MyFragment());
list.add(new MyFragment1());
list.add(new MyFragment2());
list.add(new MyFragment3());
indicator.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
vp.setCurrentItem(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
}
});
}
}
二。适配器的代码
package com.example.adapter;
import java.util.List;
import com.example.activity.MainActivity;
import com.example.fragment.MyFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class MyFragmentAdapter extends FragmentPagerAdapter {
private List<Fragment> list;
private FragmentManager fm;
public MyFragmentAdapter(FragmentManager fm,List<Fragment> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int arg0) {
return list.get(arg0);
}
@Override
public CharSequence getPageTitle(int position) {
return MainActivity.title[position % MainActivity.title.length];
}
@Override
public int getCount() {
return MainActivity.title.length;
}
}
package com.example.adapter;
import java.util.List;
import com.example.activity.R;
import com.example.bean.Datas.News;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
private Context context;
private List<News> list;
public MyAdapter(Context context, List<News> list) {
super();
this.context = context;
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if(convertView==null){
vh = new ViewHolder();
convertView = View.inflate(context, R.layout.adapter, null);
vh.tv_title= (TextView) convertView.findViewById(R.id.title);
vh.tv_content= (TextView) convertView.findViewById(R.id.content);
vh.tv_author= (TextView) convertView.findViewById(R.id.author);
vh.tv_time= (TextView) convertView.findViewById(R.id.time);
vh.tv_count= (TextView) convertView.findViewById(R.id.count);
convertView.setTag(vh);
}else{
vh = (ViewHolder) convertView.getTag();
}
vh.tv_title.setText(list.get(position).title);
vh.tv_content.setText(list.get(position).body);
vh.tv_author.setText(list.get(position).author);
vh.tv_time.setText(list.get(position).pubDate);
vh.tv_count.setText("5");
return convertView;
}
class ViewHolder{
TextView tv_title,tv_content,tv_author,tv_time,tv_count;
}
}
package com.example.adapter;
import java.util.List;
import com.example.activity.R;
import com.example.adapter.MyAdapter.ViewHolder;
import com.example.bean.BoKe.Blogs.Blog;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class BokeAdapter extends BaseAdapter {
private Context context;
private List<Blog> list;
public BokeAdapter(Context context, List<Blog> list) {
super();
this.context = context;
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if(convertView==null){
vh = new ViewHolder();
convertView = View.inflate(context, R.layout.adapter, null);
vh.tv_title= (TextView) convertView.findViewById(R.id.title);
vh.tv_content= (TextView) convertView.findViewById(R.id.content);
vh.tv_author= (TextView) convertView.findViewById(R.id.author);
vh.tv_time= (TextView) convertView.findViewById(R.id.time);
vh.tv_count= (TextView) convertView.findViewById(R.id.count);
convertView.setTag(vh);
}else{
vh = (ViewHolder) convertView.getTag();
}
vh.tv_title.setText(list.get(position).title);
vh.tv_content.setText(list.get(position).body);
vh.tv_author.setText(list.get(position).authorname);
vh.tv_time.setText(list.get(position).pubDate);
vh.tv_count.setText("5");
return convertView;
}
class ViewHolder{
TextView tv_title,tv_content,tv_author,tv_time,tv_count;
}
}
三 。bean的封装
package com.example.bean;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("oschina")
public class BoKe {
public String pagesize;
public Blogs blogs;
public class Blogs{
@XStreamImplicit(itemFieldName="blog")
public List<Blog> blog;
public class Blog{
public String id;
public String title;
public String body;
public String url;
public String pubDate;
public String authoruid;
public String authorname;
public String commentCount;
public String documentType;
}
}
}
package com.example.bean;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAliasType;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamContainedType;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.annotations.XStreamImplicitCollection;
@XStreamAlias("oschina")
public class Datas {
public String catalog;
public String newsCount;
public String pagesize;
@XStreamAlias("newslist")
public NewsList newslist;
public class NewsList{
@XStreamImplicit(itemFieldName="news")
public List<News> news;
}
public class News{
public String id;
public String title;
public String body;
public String commentCount;
public String author;
public String authorid;
public String pubDate;
public String url;
@XStreamAlias("newstype")
public NewsType newstype;
public class NewsType{
public String type;
public String authoruid2;
public String eventurl;
public String attachment;
}
}
}
四。fragment的实现(XListview的下载地址: //https://github.com/Maxwin-z/XListView-Android ,其他四个fragment也是这样)
public class MyFragment extends Fragment implements IXListViewListener{
private String TAG = "MyFragment";
private static String url = "http://www.oschina.net/action/api/news_list?";
int pagerIndex=50;
private XListView lv;
private MyAdapter adapter;
private LinkedList<News> list_ = new LinkedList<Datas.News>();
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, null);
lv = (XListView) view.findViewById(R.id.lv);
lv.setPullRefreshEnable(true);
lv.setPullLoadEnable(true);
lv.setXListViewListener(this);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//网络获取数据
getJson(pagerIndex);
}
/**
* 下来刷新
*/
@Override
public void onRefresh() {
pagerIndex--;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getJson(pagerIndex);
adapter.notifyDataSetChanged();
onLoad();
}
}, 3000);
}
/**
* 上拉加载
*/
@Override
public void onLoadMore() {
pagerIndex++;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getJson(pagerIndex);
adapter.notifyDataSetChanged();
onLoad();
}
}, 3000);
}
private void getJson(int pagerIndex) {
HttpUtils httpUtils = new HttpUtils();
/*RequestParams params = new RequestParams();
params.addBodyParameter("catalog", "1");
params.addBodyParameter("pageIndex", pageIndex[]);
params.addBodyParameter("pageSize", "6");*/
httpUtils.send(HttpMethod.GET, url+"catalog=1"+"&pageIndex="+pagerIndex+"&pageSize=6", new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
// Log.i(TAG, "----======----"+result);
final List<News> list;
XStream xStream = new XStream();
xStream.processAnnotations(Datas.class);
Datas datas = (Datas) xStream.fromXML(result);
list = (List<News>) datas.newslist.news;
// Log.i(TAG, "------"+list.size());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
adapter = new MyAdapter(getActivity(), list);
lv.setAdapter(adapter);
}
});
}
});
}
@SuppressLint("SimpleDateFormat")
private void onLoad() {
// TODO Auto-generated method stub
lv.stopRefresh();
lv.stopLoadMore();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String nowTime=df.format(new Date(System.currentTimeMillis()));// 获取当前系统时间
lv.setRefreshTime(nowTime);//释放时提示正在刷新时的当前时间
}
}