Horizontal+异步+pullTorefresh+viewPager(本地图片)+每页都有数据

来源:互联网 发布:linux shadowsock 编辑:程序博客网 时间:2024/06/05 10:19
//main<?xml version="1.0" encoding="utf-8"?><LinearLayout    android:orientation="vertical"    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" tools:context="bbb.bwie.com.heqi.MainActivity"    >    <HorizontalScrollView        android:id="@+id/hs"        android:layout_width="match_parent"        android:layout_height="wrap_content"        >        <LinearLayout            android:id="@+id/ll"            android:orientation="horizontal"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            >        </LinearLayout>    </HorizontalScrollView>    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="wrap_content">    </android.support.v4.view.ViewPager></LinearLayout>//pullTorefresh布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <com.handmark.pulltorefresh.library.PullToRefreshListView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/pt"        >    </com.handmark.pulltorefresh.library.PullToRefreshListView></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/img"        />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/name"        /></LinearLayout>//viewPagwer布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    >    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="300dp"        android:id="@+id/vp"        ></android.support.v4.view.ViewPager>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/ll"        android:orientation="horizontal"        ></LinearLayout></LinearLayout>




<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/img2"        /></LinearLayout>
import android.graphics.Color;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private HorizontalScrollView hs;    private LinearLayout ll;    private ViewPager vp;    private String[] titles;    private ArrayList<TextView> list;    List<Fragment> list2=new ArrayList<Fragment>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        hs =(HorizontalScrollView)findViewById(R.id.hs);        ll =(LinearLayout)findViewById(R.id.ll);        vp =(ViewPager)findViewById(R.id.vp);        titles = new String[]{"福利", "Android", "iOS", "休息视频", "拓展资源", "前端", "all"};        data();        list =new ArrayList<TextView>();        for (int i=0;i<titles.length;i++){            TextView view = new TextView(this);            view.setText(titles[i]);            view.setTextSize(20);            if(i==0){                view.setTextColor(Color.RED);            }else{                view.setTextColor(Color.BLACK);            }            view.setOnClickListener(this);            view.setId(i+10000);            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);            params.setMargins(20,10,20,10);            ll.addView(view,params);            list.add(view);        }        vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {            @Override            public Fragment getItem(int position) {                return list2.get(position);            }            @Override            public int getCount() {                return list2.size();            }            @Override            public Object instantiateItem(ViewGroup container, int position) {                return super.instantiateItem(container, position);            }        });        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                for (int i=0;i<list.size();i++){                    if(position==i){                        list.get(i).setTextColor(Color.RED);                    }else{                        list.get(i).setTextColor(Color.BLACK);                    }                }                TextView textView = list.get(position);                int width = textView.getWidth();//获取宽度                //计算该滑到哪里                hs.scrollTo((width+20)*position,0);//viewpager滑动时与滚动控件想配合一起滑动            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private void data() {        fragment2 f1= new fragment2(titles[0]);        fragment2 f2 = new fragment2(titles[1]);        fragment2 f3 = new fragment2(titles[2]);        fragment2 f4 = new fragment2(titles[3]);        fragment2 f5 = new fragment2(titles[4]);        fragment2 f6 = new fragment2(titles[5]);        fragment2 f7 = new fragment2(titles[6]);        list2.add(f1);        list2.add(f2);        list2.add(f3);        list2.add(f4);        list2.add(f5);        list2.add(f6);        list2.add(f7);    }    @Override    public void onClick(View view) {        int id = view.getId();        vp.setCurrentItem(id-10000);    }}
import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;/** * Created by HQ on 2017/9/19. */public class fragment2 extends Fragment {    private String a;    private ViewPager vp;    private LinearLayout ll;    List<Vpbean> vplist=new ArrayList<Vpbean>();    public fragment2(String b) {        a="http://gank.io/api/data/"+ URLEncoder.encode(b)+"/10/"+i;    }    private View view;    List<User> list = new ArrayList<User>();    private mydata mydata;    int i = 1;    private URL url;    private PullToRefreshListView pt;    Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            int i = vp.getCurrentItem() + 1;            vp.setCurrentItem(i);            handler.sendEmptyMessageDelayed(0,2000);        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment, container, false);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //获取控件        pt = (PullToRefreshListView) view.findViewById(R.id.pt);        //添加头布局        View vvp = View.inflate(getActivity(), R.layout.vp, null);        vp =(ViewPager)vvp.findViewById(R.id.vp);        ll =(LinearLayout)vvp.findViewById(R.id.ll);        ListView listView = pt.getRefreshableView();        listView.addHeaderView(vvp);        pt.setMode(PullToRefreshBase.Mode.BOTH);        //PullToRefreshListView适配器        mydata = new mydata();        pt.setAdapter(mydata);        //路径可变        new Myasynctask().execute(a);        //PullToRefreshListView监听事件        pt.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {                ll.removeAllViews();                list.clear();                i = 1;                new Myasynctask().execute("http://gank.io/api/data/Android/10/1");            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {                i++;                new Myasynctask().execute("http://gank.io/api/data/Android/10/"+i);            }        });        vplist.clear();        vplist.add(new Vpbean(R.mipmap.a));        vplist.add(new Vpbean(R.mipmap.b));        vplist.add(new Vpbean(R.mipmap.c));        vplist.add(new Vpbean(R.mipmap.d));    }    class vpmydata extends PagerAdapter{        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view==object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            View view = View.inflate(getActivity(),R.layout.vptextview,null);            ImageView img=(ImageView)view.findViewById(R.id.img2);            img.setImageResource(vplist.get(position%vplist.size()).vpimg);            container.addView(view);            return view;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View)object);        }    }    class Myasynctask extends AsyncTask<String, Void, String> {        private StringBuilder builder;        private ArrayList<ImageView> imagelist;        private ImageView img;        @Override        protected String doInBackground(String... strings) {            try {                url = new URL(strings[0]);                URLConnection connection = url.openConnection();                InputStream stream = connection.getInputStream();                BufferedReader reader = new BufferedReader(new InputStreamReader(stream));                builder = new StringBuilder();                String tem = "";                while ((tem = reader.readLine()) != null) {                    builder.append(tem);                }            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return builder.toString();        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Gson gson = new Gson();            Bean bean = gson.fromJson(s, Bean.class);            List<Bean.ResultsBean> results = bean.getResults();            for (int i = 0; i < results.size(); i++) {                String desc = results.get(i).getDesc();                list.add(new User(desc,"http://img.gank.io/9f51b7bc-73d3-4ce4-bd59-c61cb0c64325"));            }            mydata.notifyDataSetChanged();            pt.onRefreshComplete();            //加点(先不做)            nodata();            vp.setAdapter(new vpmydata());            handler.sendEmptyMessageDelayed(0,2000);            //ViewPager监听事件            vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {                @Override                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                }                @Override                public void onPageSelected(int position) {                    for (int i=0;i<imagelist.size();i++){                        if(position%vplist.size()==i){                            imagelist.get(position%vplist.size()).setImageResource(R.drawable.dot_focuable);                        }else{                            imagelist.get(i).setImageResource(R.drawable.dot_normal);                        }                    }                }                @Override                public void onPageScrollStateChanged(int state) {                }            });        }        private void nodata() {            ll.removeAllViews();            imagelist =new ArrayList<ImageView>();            if(imagelist !=null){                imagelist.clear();            }            for (int i=0;i<vplist.size();i++){                img = new ImageView(getActivity());                if(i==vp.getCurrentItem()){                    img.setImageResource(R.drawable.dot_focuable);                }else{                    img.setImageResource(R.drawable.dot_normal);                }                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);                params.setMargins(10,0,10,0);                imagelist.add(img);                ll.addView(img,params);            }        }    }    //PullToRefreshListView适配器    class mydata extends BaseAdapter {        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return list.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            ViewHolder vh;            if (view == null) {                vh = new ViewHolder();                view = View.inflate(getActivity(), R.layout.textview, null);                vh.name = (TextView) view.findViewById(R.id.name);                vh.img = (ImageView) view.findViewById(R.id.img);                view.setTag(vh);            } else {                vh = (ViewHolder) view.getTag();            }            vh.name.setText(list.get(i).getName());            ImageLoader.getInstance().displayImage(list.get(i).getUrl(), vh.img);            return view;        }        class ViewHolder {            TextView name;            ImageView img;        }    }}BeanUser用于pullTorefresh
Vpbean
用于viewPager
import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by HQ on 2017/9/19. */public class Appi extends Application{    @Override    public void onCreate() {        super.onCreate();        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();        ImageLoader.getInstance().init(build);    }}