您的位置:首页 > 理论基础 > 计算机网络

HttpUtils和XlistView

2016-07-28 19:28 381 查看
    主页面是四个RadioButton和ViewPager的滑动切换

    public class MainPagerActivity extends FragmentActivity {

    private TextView mTextView;

    private ImageView mImageView;

    private RadioGroup rg;

    private ViewPager mViewPager;

    private List<Fragment> mList;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main_pager);

        //初始化

        initView();

        //添加Fragment

        addFragment();

        //给ViewPager适配

        mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

            @Override

            public int getCount() {

                return mList.size();

            }

            @Override

            public Fragment getItem(int arg0) {

                return mList.get(arg0);

            }

        });

        //ViewPager滑动上边标题跟着滑动监听

        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override

            public void onPageSelected(int arg0) {

                for (int i = 0; i < mList.size(); i++) {

                    RadioButton rb = (RadioButton) rg.getChildAt(i);

                    if (i == arg0) {

                        rb.setChecked(true);

                        rb.setTextColor(Color.GREEN);

                    } else {

                        rb.setChecked(false);

                        rb.setTextColor(Color.BLACK);

                    }

                }

            }

            @Override

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

            }

            @Override

            public void onPageScrollStateChanged(int arg0) {

            }

        });

        //点击RadioButton得到相应的Fragment

        rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override

            public void onCheckedChanged(RadioGroup group, int checkedId) {

                switch (checkedId) {

                case R.id.rb1:

                    mViewPager.setCurrentItem(0);

                    break;

                case R.id.rb2:

                    mViewPager.setCurrentItem(1);

                    break;

                case R.id.rb3:

                    mViewPager.setCurrentItem(2);

                    break;

                case R.id.rb4:

                    mViewPager.setCurrentItem(3);

                    break;

                }

            }

        });

    }

    

    private void addFragment() {

        mList = new ArrayList<Fragment>();

        Fragment01 f1 = new Fragment01();

        Fragment02 f2 = new Fragment02();

        Fragment03 f3 = new Fragment03();

        Fragment04 f4 = new Fragment04();

        mList.add(f1);

        mList.add(f2);

        mList.add(f3);

        mList.add(f4);

    }

    private void initView() {

        mTextView = (TextView) findViewById(R.id.tv_qqname);

        mImageView = (ImageView) findViewById(R.id.iv_touxiang);

        rg = (RadioGroup) findViewById(R.id.rg);

        mViewPager = (ViewPager) findViewById(R.id.vp);

        

    }

}

Fragment里边用XlistView显示上拉加载下拉刷新

public class Fragment01 extends Fragment implements IXListViewListener {

    private XListView xListView;

    private String path = "http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=";

    Boolean bool = true;

    int j = 1;

    Myadapter adapter;

    List<News> list;

    private String str;

    Handler handler = new Handler() {

        public void handleMessage(android.os.Message msg) {

            if (msg.what == 1) {

                //上啦加载

                adapter.changUp(list);

            } else if (msg.what == 2) {

                //下拉刷新

                adapter.changDown(list);

            }

        };

    };

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment01, container, false);

        xListView = (XListView) v.findViewById(R.id.lv);

        str = path + 1;

        //加载数据

        getpull();

        //适配器

        adapter = new Myadapter(getActivity());

        xListView.setAdapter(adapter);

        //设置xListView的监听

        xListView.setXListViewListener(this);

        //设置可刷新

        xListView.setPullRefreshEnable(true);

        //设置可加载

        xListView.setPullLoadEnable(true);

        return v;

    }

    private void getpull() {

        //请求网络数据

        new Thread() {

            public void run() {

                

                HttpUtils httpUtils = new HttpUtils();

                

                httpUtils.send(HttpMethod.GET, str, new RequestCallBack<String>() {

                    // 失败

                    @Override

                    public void onFailure(HttpException arg0, String arg1) {

                        // TODO Auto-generated method stub

                        System.out.println("解析失败");

                    }

                    @Override

                    public void onSuccess(ResponseInfo<String> arg0) {

                        // TODO Auto-generated method stub

                        String xml = arg0.result;

                        InputStream inputStream = new ByteArrayInputStream(xml.getBytes());

                        //解析Xml

                        getpulllll(inputStream);

                        //判断是加载还是刷新

                        if (bool == true) {

                            //刷新

                            handler.sendEmptyMessage(1);

                        } else {

                            //加载

                            handler.sendEmptyMessage(2);

                        }

                    }

                });

            }

        }.start();

    }

    //解析Xml文件

    private void getpulllll(InputStream inputStream) {

        try {

            XmlPullParser newPullParser = Xml.newPullParser();

            newPullParser.setInput(inputStream, "utf-8");

            News n = null;

            int eventType = newPullParser.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT) {

                switch (eventType) {

                case XmlPullParser.START_DOCUMENT:

                    list = new ArrayList<News>();

                    break;

                case XmlPullParser.START_TAG:

                    if ("news".equalsIgnoreCase(newPullParser.getName())) {

                        n = new News();

                    } else if ("title".equalsIgnoreCase(newPullParser.getName())) {

                        n.setTitle(newPullParser.nextText());

                    } else if ("body".equalsIgnoreCase(newPullParser.getName())) {

                        n.setBody(newPullParser.nextText());

                    }else if ("author".equalsIgnoreCase(newPullParser.getName())) {

                        n.setAuthor(newPullParser.nextText());

                    }

                    break;

                case XmlPullParser.END_TAG:

                    if ("news".equalsIgnoreCase(newPullParser.getName())) {

                        list.add(n);

                        n = null;

                    }

                    break;

                }

                eventType = newPullParser.next();

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    //刷新监听

    @Override

    public void onRefresh() {

        str = path + 1;

        bool = true;

        getpull();

        onLoad();

    }

    //加载监听

    @Override

    public void onLoadMore() {

        j++;

        str = path + j;

        bool = false;

        getpull();

        onLoad();

    }

    //关闭上啦加载下拉刷新

    private void onLoad() {

        xListView.stopRefresh();

        xListView.stopLoadMore();

        xListView.setRefreshTime("刚刚");

    }

}

XlistView的适配器

public class Myadapter extends BaseAdapter {

    

    Context context;

    List<News> list = new ArrayList<News>();

    public Myadapter(Context context) {

        super();

        this.context = context;

    }

    

    public void changUp(List<News> blist) {

        this.list.clear();

        this.list.addAll(0, blist);

        this.notifyDataSetChanged();

    }

    public void changDown(List<News> blist) {

        

        this.list.addAll(blist);

        this.notifyDataSetChanged();

    }

    public int getCount() {  

        return list.size();  

    }  

 

    @Override  

    public Object getItem(int position) {  

        return null;  

    }  

 

    @Override  

    public long getItemId(int position) {  

        return 0;  

    }  

 

    @Override  

    public View getView(int position, View convertView, ViewGroup parent) {  

        if (convertView == null) {  

            convertView = View.inflate(context, R.layout.item, null);  

 

        }  

        TextView tilte = (TextView) convertView.findViewById(R.id.title);  

        TextView body = (TextView) convertView.findViewById(R.id.body);  

        TextView author = (TextView) convertView.findViewById(R.id.author);  

        tilte.setText(list.get(position).getTitle());  

        body.setText(list.get(position).getBody());  

        author.setText(list.get(position).getAuthor());  

 

        return convertView;  

    }  

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: