导航加下划线和数据的刷新

来源:互联网 发布:2018年考研人数 知乎 编辑:程序博客网 时间:2024/05/29 16:53

一。主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);//释放时提示正在刷新时的当前时间
    }
}



1 0
原创粉丝点击