zoukankan      html  css  js  c++  java
  • 游标和XML解析

    刷新网址 http://blog.csdn.net/lmj623565791/article/details/38238749

    方法一:

      用RadioGroup写XML文件时

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >

        <RadioGroup
            android:id="@+id/group"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/btn_1"
                android:paddingLeft="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:text="资讯" />

            <RadioButton
                android:id="@+id/btn_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:paddingLeft="10dp"
                android:text="热点" />

            <RadioButton
                android:id="@+id/btn_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:paddingLeft="10dp"
                android:text="博客" />

            <RadioButton
                android:id="@+id/btn_4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingLeft="10dp"
                android:button="@null"
                android:text="推荐" />
        </RadioGroup>

        <LinearLayout
            android:id="@+id/line"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/group" >
        </LinearLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/vp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/line" >
        </android.support.v4.view.ViewPager>

    </RelativeLayout>

    Activity是

    package com.example.youbiao;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;

    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.util.DisplayMetrics;
    import android.view.Gravity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.LinearLayout;
    import android.widget.LinearLayout.LayoutParams;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.TextView;

    public class MainActivity extends FragmentActivity implements OnClickListener {
        private int width;
        private ViewPager vp;
        private RadioGroup group;
        private String[] column = new String[] { "资讯", "热点", "博客", "推荐" };
        private RadioButton btn_1;
        private RadioButton btn_2;
        private RadioButton btn_3;
        private RadioButton btn_4;
        private LinearLayout line;

        private List<String> str = Arrays
                .asList("http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=",
                        "http://www.oschina.net/action/api/news_list?catalog=4&pageSize=10&show=week&pageIndex=",
                        "http://www.oschina.net/action/api/blog_list?type=latest&pageSize=10&pageIndex=",
                        "http://www.oschina.net/action/api/blog_list?type=recommend&pageSize=10&pageIndex=");
        private ArrayList<Fragment> list_fragment;

        private ArrayList<TextView> list_tv;

        private ArrayList<RadioButton> list_btn;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            DisplayMetrics outMetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
            width = outMetrics.widthPixels;

            init();

            // 初始化导航
            setColumn();
            // 为vp设置fragment页面
            setFragment();
            // 为vp设置适配器
            FragmentManager fm = getSupportFragmentManager();
            vp.setAdapter(new MyPagerAdapter(fm, list_fragment));
            // 设置文字颜色
            setTextClo(vp.getCurrentItem());
            // 设置游标显示
            setYouBiao(vp.getCurrentItem());
            vp.setOnPageChangeListener(new OnPageChangeListener() {

                @Override
                public void onPageSelected(int arg0) {
                    // TODO Auto-generated method stub
                    // 设置文字颜色
                    setTextClo(arg0);
                    // 设置游标显示
                    setYouBiao(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

                }
            });
        }

        private void setYouBiao(int arg0) {
            // TODO Auto-generated method stub
            // 获取当前页面的游标
            TextView textView = list_tv.get(arg0);

            // 将当前的游标显示
            textView.setVisibility(View.VISIBLE);

            // 将其他的游标隐藏
            for (int i = 0; i < list_tv.size(); i++) {
                TextView textView2 = list_tv.get(i);

                if (textView2 != textView) {
                    textView2.setVisibility(View.INVISIBLE);
                }
            }
        }

        private void setTextClo(int p) {
            // TODO Auto-generated method stub
            RadioButton radioButton = list_btn.get(p);
            radioButton.setGravity(Gravity.CENTER);
            radioButton.setTextColor(Color.GREEN);
            for (int i = 0; i < list_btn.size(); i++) {
                RadioButton radioButton2 = list_btn.get(i);
                if (radioButton2 != radioButton) {
                    radioButton2.setTextColor(Color.BLACK);
                }
            }
        }

        private void setFragment() {
            // TODO Auto-generated method stub
            list_fragment = new ArrayList<Fragment>();
            for (int i = 0; i < column.length; i++) {
                // 创建fragment对象
                MyFragment myFragment = new MyFragment(str.get(i), i);
                list_fragment.add(myFragment);
            }
        }

        private void setColumn() {
            // TODO Auto-generated method stub
            // 创建集合对象
            list_tv = new ArrayList<TextView>();
            for (int i = 0; i < 4; i++) {
                TextView tv = new TextView(this);
                tv.setBackgroundColor(Color.GREEN);
                tv.setGravity(Gravity.CENTER);
                LinearLayout.LayoutParams params_1 = new LayoutParams(width / 4, 4);
                tv.setVisibility(View.INVISIBLE);
                line.addView(tv, params_1);
                // 收集textview,即游标
                list_tv.add(tv);

            }
        }

        private void init() {
            // TODO Auto-generated method stub
            group = (RadioGroup) findViewById(R.id.group);
            btn_1 = (RadioButton) findViewById(R.id.btn_1);
            btn_2 = (RadioButton) findViewById(R.id.btn_2);
            btn_3 = (RadioButton) findViewById(R.id.btn_3);
            btn_4 = (RadioButton) findViewById(R.id.btn_4);

            btn_1.setOnClickListener(this);
            btn_2.setOnClickListener(this);
            btn_3.setOnClickListener(this);
            btn_4.setOnClickListener(this);
            vp = (ViewPager) findViewById(R.id.vp);
            line = (LinearLayout) findViewById(R.id.line);

            list_btn = new ArrayList<RadioButton>();
            list_btn.add(btn_1);
            list_btn.add(btn_2);
            list_btn.add(btn_3);
            list_btn.add(btn_4);
        }

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.btn_1:
                vp.setCurrentItem(0);
                break;

            case R.id.btn_2:
                vp.setCurrentItem(1);
                break;

            case R.id.btn_3:
                vp.setCurrentItem(2);
                break;

            case R.id.btn_4:
                vp.setCurrentItem(3);
                break;

            default:
                break;
            }
        }

    }
    Vo包是  网址是 http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=

    package com.example.youbiao;

    import java.io.Serializable;
    import java.util.List;

    import com.thoughtworks.xstream.annotations.XStreamAlias;
    import com.thoughtworks.xstream.annotations.XStreamImplicit;

    @XStreamAlias("oschina")
    public class Bean implements Serializable {
         public String catalog;
         public String newsCount;
         public String pagesize;
         public Newslist newslist;
        
         @XStreamAlias("newslist")
         public class Newslist implements Serializable{
             @XStreamImplicit(itemFieldName="news")
             public List<News> news;
         }
         public class News implements Serializable{
             public String id;
             public String title;
             public String body;
             public String commentCount;
             public String author;
             public String authorid;
             public String pubDate;
             public String url;
             public Type newstype;
         }
         @XStreamAlias("newstype")
         public class Type implements Serializable{
             public String type;
             public String authoruid2;
             public String eventurl;
             public String attachment;
         }
        
    }

    Fragment是

    package com.example.youbiao;

    import java.util.List;

    import android.os.Bundle;
    import android.os.Handler;
    import android.support.v4.app.Fragment;
    import android.text.format.DateUtils;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    import com.example.youbiao.Bean.News;
    import com.example.youbiao.Blog.BlogEntity;
    import com.handmark.pulltorefresh.library.PullToRefreshBase;
    import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
    import com.handmark.pulltorefresh.library.PullToRefreshListView;
    import com.lidroid.xutils.HttpUtils;
    import com.lidroid.xutils.exception.HttpException;
    import com.lidroid.xutils.http.ResponseInfo;
    import com.lidroid.xutils.http.callback.RequestCallBack;
    import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
    import com.thoughtworks.xstream.XStream;

    public class MyFragment extends Fragment {

        private String url;
        private int position;
        private BeanBaseAdapter adapter;
        private BlogBaseAdapter blogadapter;
        private int num;
        private Handler mhandler;
        private List<News> list;
        private List<BlogEntity> lists;
        private PullToRefreshListView mPullRefreshListView;

        public MyFragment(String url, int position) {
            super();
            this.url = url;
            this.position = position;
        }

        @SuppressWarnings("unchecked")
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment, null);
            mhandler = new Handler();

            Log.i("aaa", position+"");
            getdata(url);
            mPullRefreshListView = (PullToRefreshListView)view. findViewById(R.id.pull_refresh_list);  
            mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2() {

                @Override
                public void onPullDownToRefresh(PullToRefreshBase refreshView) {
                    // TODO Auto-generated method stub
                    mhandler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            String u=url+num;
                            num++;
                            getdata(u);
                            onLoad();
                            mPullRefreshListView.onRefreshComplete();  
                        }
                    }, 2000);
                }

                @Override
                public void onPullUpToRefresh(PullToRefreshBase refreshView) {
                    // TODO Auto-generated method stub
                    mhandler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            String u=url+num;
                            num+=2;
                            getdataflush(u);
                            onLoad();
                            mPullRefreshListView.onRefreshComplete();  
                        }

                    }, 2000);
                }
            });
            return view;
        }
        
        private void getdataflush(String u) {
            // TODO Auto-generated method stub
            HttpUtils httpUtils=new HttpUtils();
            httpUtils.send(HttpMethod.GET, u, new RequestCallBack<String>() {

                @Override
                public void onFailure(HttpException arg0, String arg1) {
                    // TODO Auto-generated method stub
                    
                }

                @Override
                public void onSuccess(ResponseInfo<String> arg0) {
                    // TODO Auto-generated method stub
                    XStream stream=new XStream();
                    if (position==0||position==1) {
                        stream.processAnnotations(Bean.class);
                        Bean bean = (Bean) stream.fromXML(arg0.result);
                        List<News> list1 = bean.newslist.news;
                        list.addAll(list1);
                        adapter.notifyDataSetChanged();
                    }else if(position==2||position==3){
                        stream.processAnnotations(Blog.class);
                        Blog blog = (Blog) stream.fromXML(arg0.result);
                        List<BlogEntity> lists1 = blog.blogs.blog;
                        lists.addAll(lists1);
                        blogadapter.notifyDataSetChanged();
                    }
                }
            });
        }
        

        private void getdata(String url2) {
            // TODO Auto-generated method stub
            HttpUtils httpUtils=new HttpUtils();
            httpUtils.send(HttpMethod.GET, url2, new RequestCallBack<String>() {

                @Override
                public void onFailure(HttpException arg0, String arg1) {
                    // TODO Auto-generated method stub
                    
                }

                @Override
                public void onSuccess(ResponseInfo<String> arg0) {
                    // TODO Auto-generated method stub
                    XStream stream=new XStream();
                    if (position==0||position==1) {
                        stream.processAnnotations(Bean.class);
                        Bean bean = (Bean) stream.fromXML(arg0.result);
                        list = bean.newslist.news;
                        adapter = new BeanBaseAdapter(getActivity(),list);
                        mPullRefreshListView.setAdapter(adapter);
                    }else if(position==2||position==3){
                        stream.processAnnotations(Blog.class);
                        Blog blog = (Blog) stream.fromXML(arg0.result);
                        lists = blog.blogs.blog;
                        Log.i("aaa", lists.toString());
                        blogadapter = new BlogBaseAdapter(getActivity(),lists);
                        mPullRefreshListView.setAdapter(blogadapter);
                    }
                }
            });
        }
        private void onLoad(){
             String label = DateUtils.formatDateTime(  
                     getActivity(),  
                     System.currentTimeMillis(),  
                     DateUtils.FORMAT_SHOW_TIME  
                             | DateUtils.FORMAT_SHOW_DATE  
                             | DateUtils.FORMAT_ABBREV_ALL);  
             // 显示最后更新的时间  
             mPullRefreshListView.getLoadingLayoutProxy()  
                     .setLastUpdatedLabel(label);
        }

    }

    Fragment适配器是

    package com.example.youbiao;

    import java.util.List;

    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;

    public class MyPagerAdapter extends FragmentPagerAdapter{

        private List<Fragment> list;

        public MyPagerAdapter(FragmentManager fm,List<Fragment> list) {
            super(fm);
            // TODO Auto-generated constructor stub
            this.list=list;
        }

        @Override
        public Fragment getItem(int arg0) {
            // TODO Auto-generated method stub
            return list.get(arg0);
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.size();
        }

    }

    适配器是

    package com.example.youbiao;

    import java.util.List;

    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;

    import com.example.youbiao.Bean.News;

    public class BeanBaseAdapter extends BaseAdapter {
        Context context;
        List<News> list;
        public BeanBaseAdapter(Context context, List<News> list) {
            // TODO Auto-generated constructor stub
            this.context=context;
            this.list=list;
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.size();
        }

        @Override
        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return list.get(arg0);
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ViewHolder vh;
            if(convertView==null){
                convertView=LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_2, null);
                vh=new ViewHolder();
                vh.tv1=(TextView) convertView.findViewById(android.R.id.text1);
                vh.tv2=(TextView) convertView.findViewById(android.R.id.text2);
                convertView.setTag(vh);
            }else{
                vh=(ViewHolder) convertView.getTag();
            }
            vh.tv1.setText(list.get(position).title);
            vh.tv2.setText(list.get(position).body);
            return convertView;
        }
        class ViewHolder{
            TextView tv1,tv2;
        }
    }

    方法二   建议网址 http://www.jianshu.com/p/a2263ee3e7c3  

    package com.example.mouth;

    import java.util.Arrays;
    import java.util.List;

    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.widget.Toast;

    import com.viewpagerindicator.TabPageIndicator;

    public class MainActivity extends FragmentActivity {
        private ViewPager mPager;
        private List<String> url_list = Arrays
                .asList("http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=",
                        "http://www.oschina.net/action/api/news_list?catalog=4&pageSize=10&show=week&pageIndex=",
                        "http://www.oschina.net/action/api/blog_list?type=latest&pageSize=10&pageIndex=",
                        "http://www.oschina.net/action/api/blog_list?type=recommend&pageSize=10&pageIndex=");
        private static final String[] TITLE = new String[] {"咨询", "热点", "博客","推荐"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findId();
        }
        private void findId() {
            mPager = (ViewPager) findViewById(R.id.pager);
            // ViewPager的adapter
            FragmentPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
            mPager.setAdapter(adapter);
            // 实例化TabPageIndicator然后设置ViewPager与之关联
            TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
            indicator.setViewPager(mPager);

            // 如果我们要对ViewPager设置监听,用indicator设置就行了
            indicator.setOnPageChangeListener(new OnPageChangeListener() {

                @Override
                public void onPageSelected(int arg0) {
                    
                }

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

                }

                @Override
                public void onPageScrollStateChanged(int arg0) {

                }
            });

        }

        class MyPagerAdapter extends FragmentPagerAdapter {

            public MyPagerAdapter(FragmentManager fm) {
                super(fm);
                // TODO Auto-generated constructor stub
            }

            @Override
            public Fragment getItem(int position) {
                // 新建一个Fragment来展示ViewPager item的内容,并传递参数
                BaseFragment fragment = new BaseFragment(url_list.get(position),
                        position);
                return fragment;
            }

            @Override
            public CharSequence getPageTitle(int position) {
                return TITLE[position % TITLE.length];
            }

            @Override
            public int getCount() {
                return TITLE.length;
            }
        }
    }

  • 相关阅读:
    分数的加减法——C语言初学者代码中的常见错误与瑕疵(10)
    关于陈冰、陈良乔以及《我的第一本C++书》【转】
    逻辑训练与说理教育从小学开始【转】
    薛非《品悟C-抛弃C程序设计中的谬误与恶习》读后感part1【转】
    C语言初学者代码中的常见错误与瑕疵(9)
    为什么在我眼里你是一只傻逼——傻逼“常所用”句型之(1)——“就算……但是……”
    要心中有“数”——C语言初学者代码中的常见错误与瑕疵(8)
    220v转5v阻容降压电路
    IAR for stm8 memory窗口的功能
    stm8 io口重映射
  • 原文地址:https://www.cnblogs.com/Zb759260513/p/5353836.html
Copyright © 2011-2022 走看看