Fragment滑动加解析

/**
*主布局
*/
    <com.astuetz.PagerSlidingTabStrip
        android:id="@+id/tabPager"
        android:layout_width="match_parent"
        android:layout_height="40dip"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/vPager"
        android:layout_width="match_parent"
    android:layout_height="fill_parent"
    />
/**
*MainActivity里的设置导航头
*/
public class MainActivity extends FragmentActivity {

    private PagerSlidingTabStrip psts;
    private ViewPager vp;
    private ArrayList<String> ls;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 找控件
        into();
        add();
        // 设置适配器
        vp.setAdapter(new FragmentAdapter(getSupportFragmentManager(), ls));
        psts.setViewPager(vp);
        //变颜色
        psts.setIndicatorColor(Color.GREEN);
        psts.setShouldExpand(true);
        vp.setCurrentItem(0);
    }

    private void add() {
        ls = new ArrayList<String>();
        ls.add("看看咨询");
        ls.add("看看热点");
        ls.add("看看博客");
        ls.add("看看推荐");
    }

    private void into() {
        psts = (PagerSlidingTabStrip) findViewById(R.id.tabPager);
        vp = (ViewPager) findViewById(R.id.vPager);
        }

    }
/**
*工具类
*/
public static String readUtils(String url) throws Exception{
        //创建一个client
        HttpClient client=new DefaultHttpClient();
        //get输入地址
        HttpGet get=new HttpGet(url);
        //防止出现403 
        get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0");
        HttpResponse resp=client.execute(get);
        //判断code是否正确
        if(resp.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
            String json=EntityUtils.toString(resp.getEntity(), "utf-8");
            return json;
        }
        return "";      
    }
/**
*适配器
*/
public class FragmentAdapter extends FragmentPagerAdapter {
    private ArrayList<String> ls;

    public FragmentAdapter(FragmentManager fm, ArrayList<String> ls) {
        super(fm);
        this.ls = ls;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return ls.get(position);
    }

    @Override
    public Fragment getItem(int arg0) {
        switch (arg0) {
        case 0:
            return new FragOne();
        case 1:
            return new FragTwo();
        case 2:
            return new FragThree();
        default:
            return new FragFour();
        }
    }

    @Override
    public int getCount() {
        return ls != null ? ls.size() : 0;
    }

}

/**
*解析
*/
public class FragOne extends Fragment {
    private ArrayList<News> list;
    private XListView xlv;
    private int currentState;
    private int STATE_REFRESH = 1;
    private int STATE_LOAD = 2;
    private News news;

    Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            if (msg.what == 0) {
                OneAdapter adapter = new OneAdapter(list, getActivity());
                xlv.setAdapter(adapter);
                onload();
            }
        }

    };

    private void onload() {
        xlv.stopLoadMore();
        xlv.stopRefresh();
        xlv.setRefreshTime("刚刚");
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frag_one, container, false);
        xlv = (XListView) view.findViewById(R.id.lv);
        list = new ArrayList<News>();
        xlv.setPullLoadEnable(true);
        xlv.setPullRefreshEnable(true);
        xlv.setXListViewListener(new IXListViewListener() {

            @Override
            public void onRefresh() {
                currentState = STATE_REFRESH;
                into("http://www.oschina.net/action/api/news_list/pageIndex=" + 2);

            }

            @Override
            public void onLoadMore() {
                currentState = STATE_LOAD;
                into("http://www.oschina.net/action/api/news_list/pageIndex=" + 2);

            }
        });
        String url = "http://www.oschina.net/action/api/news_list/pageIndex=" + 1;
        into(url);
        return view;
    }

    private void into(final String url) {
        new Thread() {

            public void run() {
                HttpURLConnection con;
                try {
                    con = (HttpURLConnection) new URL(url).openConnection();
                    con.setConnectTimeout(15000);
                    con.setRequestMethod("GET");
                    int i = con.getResponseCode();
                    if (i == 200) {
                        InputStream input = con.getInputStream();
                        XmlPullParser parser = Xml.newPullParser();
                        parser.setInput(input, "UTF-8");
                        int event = parser.getEventType();

                        String str = null;
                        // XmlPullParser.END_DOCUMENT文档结束
                        while (event != XmlPullParser.END_DOCUMENT) {
                            switch (event) {
                            case XmlPullParser.START_DOCUMENT:

                                break;
                            // XmlPullParser.START_TAG节点
                            case XmlPullParser.START_TAG:
                                str = parser.getName();
                                if ("news".equals(str)) {
                                    news = new News();
                                }
                                break;
                            // XmlPullParser.TEXT内容
                            case XmlPullParser.TEXT:
                                if ("title".equals(str)) {
                                    news.setTitle(parser.getText().trim());
                                }
                                if ("body".equals(str)) {
                                    news.setBody(parser.getText().trim());
                                }
                                if ("commentCount".equals(str)) {
                                    news.setCommentCount(parser.getText().trim());
                                }
                                if ("author".equals(str)) {
                                    news.setAuthor(parser.getText().trim());
                                }
                                if ("pubDate".equals(str)) {
                                    news.setPubDate(parser.getText().trim());
                                }
                                break;
                            case XmlPullParser.END_TAG:
                                str = parser.getName();
                                if ("news".equals(str)) {
                                    list.add(news);
                                    handler.obtainMessage(0, list).sendToTarget();
                                    news = null;
                                }
                                str = "";
                                break;

                            }
                            event = parser.next();
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            };
        }.start();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值