横向滑动和PullToRefreshListView

来源:互联网 发布:中午跑步 知乎 编辑:程序博客网 时间:2024/06/06 04:27
//主界面
package com.example.myapplication;import android.graphics.Color;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;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 hrztsv;    private ViewPager vp;    private LinearLayout ll;    String[] tou;    List<TextView> arr;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //找到控件        hrztsv = (HorizontalScrollView) findViewById(R.id.horizontalscrollview);        vp = (ViewPager) findViewById(R.id.viewpager);        ll = (LinearLayout) findViewById(R.id.linearlayout);        tou = new String[]{"福利","Android","iOS","休息视频","拓展资源","前端","all"};        arr = new ArrayList<TextView>();        for (int i = 0; i <tou.length ; i++) {            TextView tv = new TextView(MainActivity.this);            tv.setText(tou[i]);            tv.setId(i+1000);            tv.setOnClickListener(MainActivity.this);            if(i==0){                tv.setTextColor(Color.RED);            }else{                tv.setTextColor(Color.BLACK);            }            LinearLayout.LayoutParams lila = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);            lila.setMargins(20,10,20,10);            ll.addView(tv,lila);            arr.add(tv);        }        //适配器        MyAdpt ma = new MyAdpt(getSupportFragmentManager());        vp.setAdapter(ma);        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                for(int n=0;n<arr.size();n++){                    if(n==position){                        arr.get(n).setTextColor(Color.RED);                    }else{                        arr.get(n).setTextColor(Color.BLACK);                    }                }                TextView textView = arr.get(position);                int ii = textView.getWidth() / arr.size() * position;                hrztsv.smoothScrollBy(ii,0);            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    @Override    public void onClick(View view) {    }    //适配器    class  MyAdpt extends  FragmentPagerAdapter{        public MyAdpt(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return new MyFragment().getDizhi(arr.get(position).getText().toString());        }        @Override        public int getCount() {            return arr.size();        }    }}
//Fragment
package com.example.myapplication;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;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.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.LinkedList;import java.util.List;/** * author:Created by WangZhiQiang on 2017/9/19. */public class MyFragment extends Fragment{    int index = 1;    List<Bean.ResultsBean> resu;    private PullToRefreshListView ptlv;    String mingzi = "Android";    LinkedList<Bean.ResultsBean> arr;    MyAdp mm;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v = View.inflate(getActivity(),R.layout.item_pull,null);        ptlv = v.findViewById(R.id.pull_refresh_list);        return v;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        Bundle arguments = getArguments();        mingzi = arguments.getString("lujing");        ptlv.setMode(PullToRefreshBase.Mode.BOTH);        arr = new LinkedList<Bean.ResultsBean>();        mm = new MyAdp();        ptlv.setAdapter(mm);        //查找地址        try {            new MyAstask().execute("http://gank.io/api/data/"+ URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index);            ptlv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {                @Override                public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {                    try {                        arr.clear();                        index=1;                        new MyAstask().execute("http://gank.io/api/data/"+URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index);                    } catch (Exception e) {                        e.printStackTrace();                    }                }                @Override                public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {                    try {                        index++;                        new MyAstask().execute("http://gank.io/api/data/"+URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index);                    } catch (UnsupportedEncodingException e) {                        e.printStackTrace();                    }                }            });        } catch (Exception e) {            e.printStackTrace();        }    }    //创建一个方法    public static Fragment getDizhi(String jiepath){        MyFragment myFragment = new MyFragment();        Bundle bundle = new Bundle();        bundle.putString("lujing",jiepath);        myFragment.setArguments(bundle);        return myFragment;    }    //异步加载    class  MyAstask extends AsyncTask<String,Void,String>{        @Override        protected void onPreExecute() {            super.onPreExecute();        }        @Override        protected void onPostExecute(String string) {            super.onPostExecute(string);            //gosn解析            Gson gson = new Gson();            Bean be = gson.fromJson(string, Bean.class);            resu = be.getResults();            arr.addAll(resu);            mm.notifyDataSetChanged();            ptlv.onRefreshComplete();        }        @Override        protected void onProgressUpdate(Void... values) {            super.onProgressUpdate(values);        }        //自动解析        @Override        protected String doInBackground(String... strings) {            try {                URL url = new URL(strings[0]);                HttpURLConnection hu = (HttpURLConnection) url.openConnection();                if (hu.getResponseCode()==200){                    InputStream inputStream = hu.getInputStream();                    BufferedReader b = new BufferedReader(new InputStreamReader(inputStream));                    StringBuilder sb = new StringBuilder();                    String st = "";                    while((st=b.readLine())!=null){                        sb.append(st);                    }                    String to = sb.toString();                    return to;                }            } catch (Exception e) {                e.printStackTrace();            }            return null;        }    }    //适配器    class  MyAdp extends BaseAdapter{        @Override        public int getItemViewType(int position) {            Bean.ResultsBean resultsBea = arr.get(position);            if(resultsBea.getImages()==null){                return 1;            }            return 2;        }        @Override        public int getViewTypeCount() {            return 10;        }        @Override        public int getCount() {            return arr.size();        }        @Override        public Object getItem(int i) {            return arr.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        //得到视图        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            int itemViewType = getItemViewType(i);            Bean.ResultsBean result = arr.get(i);            switch (itemViewType){                case  1:                    Adpt2 ad2;                    if(view==null){                        view = View.inflate(getActivity(),R.layout.listview_shitu2,null);                        ad2 = new Adpt2();                        ad2.tv2 = view.findViewById(R.id.tv2);                        view.setTag(ad2);                    }else{                        ad2 = (Adpt2) view.getTag();                    }                    ad2.tv2.setText(result.getCreatedAt());                    break;                case  2:                    Adpt ad;                    if(view==null){                        view = View.inflate(getActivity(),R.layout.listview_item,null);                        ad = new Adpt();                        ad.img = view.findViewById(R.id.imag);                        ad.tv = view.findViewById(R.id.tex);                        view.setTag(ad);                    }else{                        ad = (Adpt) view.getTag();                    }                    ImageLoader.getInstance().displayImage(result.getImages().get(0),ad.img);                    ad.tv.setText(result.getCreatedAt());                    break;            }            return view;        }        class Adpt{            ImageView img;            TextView tv;        }        class Adpt2{            TextView tv2;        }    }}
//app
package com.example.myapplication;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * author:Created by WangZhiQiang on 2017/9/19. */public class app extends Application{    @Override    public void onCreate() {        super.onCreate();        ImageLoaderConfiguration il = new ImageLoaderConfiguration.Builder(this).build();        ImageLoader.getInstance().init(il);    }}
//布局  主布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout    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="com.example.myapplication.MainActivity">    <HorizontalScrollView        android:id="@+id/horizontalscrollview"        android:layout_width="match_parent"        android:layout_height="wrap_content">        <LinearLayout            android:id="@+id/linearlayout"            android:orientation="horizontal"            android:layout_width="match_parent"            android:layout_height="wrap_content"></LinearLayout>    </HorizontalScrollView>    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/horizontalscrollview"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"></android.support.v4.view.ViewPager></RelativeLayout>

//PullToRefreshListView布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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:id="@+id/pull_refresh_list"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:cacheColorHint="#00000000"        android:divider="#19000000"        android:dividerHeight="4dp"        android:fadingEdge="none"        android:fastScrollEnabled="false"        android:footerDividersEnabled="false"        android:headerDividersEnabled="false"        android:smoothScrollbar="true" /></RelativeLayout>

//控件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"    android:layout_height="match_parent">    <ImageView        android:id="@+id/imag"        android:layout_width="match_parent"        android:layout_height="300dp" />    <TextView        android:id="@+id/tex"        android:layout_below="@id/imag"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></RelativeLayout>
//字体大小
<?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">    <TextView        android:id="@+id/tv2"        android:textSize="20dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>

 
阅读全文
0 0
原创粉丝点击