侧滑+横向滚动条+PullToRefreshListView+拼接字符串接口

来源:互联网 发布:华帝油烟机怎么样知乎 编辑:程序博客网 时间:2024/06/09 18:08

布局

1.

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout    android:id="@+id/ddd"    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.my_yuekao_dome.MainActivity">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <HorizontalScrollView            android:id="@+id/hlv"            android:layout_width="match_parent"            android:layout_height="wrap_content">            <LinearLayout                android:id="@+id/ll"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:orientation="horizontal"                ></LinearLayout>        </HorizontalScrollView>        <android.support.v4.view.ViewPager            android:id="@+id/pager"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_below="@+id/hlv"            />    </RelativeLayout>    <ListView        android:id="@+id/lv"        android:background="@color/colorPrimary"        android:layout_width="300dp"        android:layout_gravity="left"        android:choiceMode="singleChoice"        android:layout_height="match_parent"        /></android.support.v4.widget.DrawerLayout>
2.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_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>
MainActivity页面
public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private ViewPager pager;    private HorizontalScrollView hlv;    private LinearLayout ll;    private List<TextView> arr;    private DrawerLayout ddd;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        hlv = (HorizontalScrollView) findViewById(R.id.hlv);        pager= (ViewPager) findViewById(R.id.pager);        ll = (LinearLayout) findViewById(R.id.ll);        ddd = (DrawerLayout) findViewById(R.id.ddd);        String[] 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 params=new LinearLayout.LayoutParams(ViewPager.LayoutParams.WRAP_CONTENT,ViewPager.LayoutParams.WRAP_CONTENT);            params.setMargins(10,0,10,0);            ll.addView(tv,params);            arr.add(tv);        }        MyAdapter adapter=new MyAdapter(getSupportFragmentManager());        pager.setAdapter(adapter);        pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                for(int i=0;i<arr.size();i++){                    if(i==position){                        arr.get(i).setTextColor(Color.RED);                    }else {                        arr.get(i).setTextColor(Color.BLACK);                    }                }                TextView textView = arr.get(position);                int i = textView.getWidth() / arr.size() * position;                hlv.smoothScrollBy(i,0);            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    @Override    public void onClick(View v) {        int id = v.getId();        pager.setCurrentItem(id-1000);    }    class MyAdapter extends FragmentPagerAdapter{        public MyAdapter(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页面
public class MyFragment extends Fragment{    private PullToRefreshListView ptlv;    int index=1;    String mingzi="福利";    private List<Bean.ResultsBean> results;    private List<Bean.ResultsBean> arr;    private MAdapter adapter;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v=View.inflate(getActivity(),R.layout.pull,null);        ptlv = (PullToRefreshListView) v.findViewById(R.id.pull_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 ArrayList<Bean.ResultsBean>();        adapter = new MAdapter();        ptlv.setAdapter(adapter);        try {            new MyAsyncTask().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 MyAsyncTask().execute("http://gank.io/api/data/"+ URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index);                    } catch (UnsupportedEncodingException e) {                        e.printStackTrace();                    }                }                @Override                public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {                    try {                        index++;                        new MyAsyncTask().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 MyAsyncTask extends AsyncTask<String,Void,String>{        @Override        protected void onPreExecute() {            super.onPreExecute();        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Gson gson=new Gson();            Bean bean = gson.fromJson(s, Bean.class);            results = bean.getResults();            arr.addAll(results);            adapter.notifyDataSetChanged();            ptlv.onRefreshComplete();        }        @Override        protected void onProgressUpdate(Void... values) {            super.onProgressUpdate(values);        }        @Override        protected String doInBackground(String... params) {            return new NetWorkUtils().getJson(params[0]);        }    }    class MAdapter extends BaseAdapter{        @Override        public int getItemViewType(int position) {            Bean.ResultsBean resultsBean = arr.get(position);            if(resultsBean.getImages()==null){                return 1;            }            return 2;        }        @Override        public int getViewTypeCount() {            return 100;        }        @Override        public int getCount() {            return arr.size();        }        @Override        public Object getItem(int position) {            return arr.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            int itemViewType = getItemViewType(position);            switch (itemViewType){                case 1:                   convertView=View.inflate(getActivity(),R.layout.item2,null);                   TextView tv= (TextView) convertView.findViewById(R.id.it_text1);                    tv.setText(arr.get(position).getCreatedAt());                    break;                case 2:                    convertView=View.inflate(getActivity(),R.layout.item1,null);                    ImageView img= (ImageView) convertView.findViewById(R.id.it_image);                    TextView tv1= (TextView) convertView.findViewById(R.id.it_text);                    ImageLoader.getInstance().displayImage(arr.get(position).getImages().get(0),img);                    tv1.setText(arr.get(position).getCreatedAt());            }            return convertView;        }    }}