布局
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; } } }