HttpUtils和XlistView

来源:互联网 发布:白金数据电影 编辑:程序博客网 时间:2024/05/29 16:33

    主页面是四个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;  
    }  

}

0 0
原创粉丝点击