一,Text3 数据
package com.bwei.month_lianxi2.activity; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ScrollView; import com.bwei.month_lianxi2.MyApp; import com.bwei.month_lianxi2.MyListView; import com.bwei.month_lianxi2.R; import com.bwei.month_lianxi2.adapter.MyBase; import com.bwei.month_lianxi2.adapter.MyPageAdapter; import com.bwei.month_lianxi2.bean.Goods; import com.bwei.month_lianxi2.bean.ViewPagers; import com.bwei.month_lianxi2.httpurl.HttpUrl; import com.bwei.month_lianxi2.httputil.HttpUtils; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity------"; private ViewPager viewPager; private MyPageAdapter myPageAdapter; private MyBase myBase; private MyListView listView; private static int page = 1; private List<ImageView> lunbo_list = new ArrayList<>();//轮播图集合 private List<Goods.DataBean> liebiao_list = new ArrayList<>();//列表数据 private List<ImageView> yuandian_list = new ArrayList<>();//小圆点集合 private PullToRefreshScrollView pullToRefreshScrollView; private MyHandler myHandler = new MyHandler(); private LinearLayout linearLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化视图 initview(); myBase = new MyBase(liebiao_list, MainActivity.this); listView.setAdapter(myBase); //获取轮播图数据 getViewPager(); } //ViewPager轮播图 private void getViewPager() { HttpUtils instance = HttpUtils.getInstance(); instance.get(HttpUrl.VIEW_URL); instance.setHttpUtilsListener(new HttpUtils.HttpUtilListener() { @Override public void getSuccess(String json) { //成功 Log.d(TAG, "轮播图数据 " + json); Gson gson = new Gson(); ViewPagers lunbo_data = gson.fromJson(json, ViewPagers.class); List<ViewPagers.DataBean> data = lunbo_data.getData();//轮播图数据 for (int i = 0; i < data.size(); i++) { ImageView imageView = new ImageView(MainActivity.this); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//设置图片类型 String icon = data.get(i).getIcon();//轮播图地址 ImageLoader.getInstance().displayImage(icon, imageView, MyApp.getOptions());//加载图片 lunbo_list.add(imageView);//把图片放到轮播集合里 //添加小圆点 ImageView shape=new ImageView(MainActivity.this); shape.setImageResource(R.drawable.selector_shape); //将小圆点添加到集合 yuandian_list.add(shape); //将小圆点添加到布局里 linearLayout.addView(shape); } //默认第一个选中 yuandian_list.get(0).setSelected(true); //创建适配器 myPageAdapter = new MyPageAdapter(lunbo_list); viewPager.setAdapter(myPageAdapter); //发送轮播,进行轮播 myHandler.sendEmptyMessageDelayed(0, 2000); //记住,轮播图做完 请求ListView数据列表 getListView(); } @Override public void getError(String error) { //失败 } }); } public void getListView() { HttpUtils instance1 = HttpUtils.getInstance(); instance1.get(HttpUrl.GOODS_URL + "?page=" + page); instance1.setHttpUtilsListener(new HttpUtils.HttpUtilListener() { @Override public void getSuccess(String json) { //成功 Log.d(TAG, "展示数据: " + json); Gson gson = new Gson(); Goods goods_date = gson.fromJson(json, Goods.class); List<Goods.DataBean> data = goods_date.getData(); //将数据添加到集合中 liebiao_list.addAll(data); //如果page=1的时候,清空 if (page == 1) { liebiao_list.clear(); } //清空完把数据添加到集合 liebiao_list.addAll(data); //创建适配器刷新 myBase.notifyDataSetChanged(); //滑动后缩回去 pullToRefreshScrollView.onRefreshComplete(); } @Override public void getError(String error) { } }); } private void initview() { viewPager = findViewById(R.id.viewpager); listView = findViewById(R.id.listview); pullToRefreshScrollView = findViewById(R.id.pull_to_refresh_scrollview); linearLayout = findViewById(R.id.linearlayout); //给scrollView设置上拉加载下拉刷新 pullToRefreshScrollView.setMode(PullToRefreshBase.Mode.BOTH); pullToRefreshScrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) { //下拉刷新 page = 1; getListView(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) { //上拉加载 page++; getListView(); } }); } //使用handler 进行轮播 class MyHandler extends Handler { @Override public void handleMessage(Message msg) { viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); //小圆点循环选中 for (int i = 0; i <yuandian_list.size() ; i++) { if(i==viewPager.getCurrentItem()%yuandian_list.size()){ yuandian_list.get(i).setSelected(true); }else{ yuandian_list.get(i).setSelected(false); } } myHandler.sendEmptyMessageDelayed(0, 2000); } } @Override protected void onDestroy() { super.onDestroy(); myHandler.removeCallbacksAndMessages(null); } }
二,模拟题 MainActivity
package com.bwei.month_lianxi3.activity; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.bwei.month_lianxi3.R; import com.bwei.month_lianxi3.adapter.MyFragment; import com.bwei.month_lianxi3.fragment.Fragment01; import com.bwei.month_lianxi3.fragment.Fragment02; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private TextView t1,t2; private ViewPager viewPager; private List<Fragment> fragment=new ArrayList<>();//fragment集合 private MyFragment myFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化视图 initview(); //初始化数据viewpager initgetViewPager(); } private void initgetViewPager() { Fragment f1=new Fragment01(); Fragment f2=new Fragment02(); fragment.add(f1);//添加到集合 fragment.add(f2); //创建适配器 myFragment = new MyFragment(getSupportFragmentManager(),fragment); viewPager.setAdapter(myFragment); myFragment.notifyDataSetChanged(); } private void initview() { t1 = findViewById(R.id.page1); t2=findViewById(R.id.page2); viewPager = findViewById(R.id.viewpager); t1.setOnClickListener(this); t2.setOnClickListener(this); } //t1,t2点击事件 @Override public void onClick(View v) { switch (v.getId()){ case R.id.page1: viewPager.setCurrentItem(0); break; case R.id.page2: viewPager.setCurrentItem(1); break; } } }
三,page1_Fragment
package com.bwei.month_lianxi3.fragment; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.bwei.month_lianxi3.R; import com.bwei.month_lianxi3.adapter.MyBase1; import com.bwei.month_lianxi3.bean.One; import com.bwei.month_lianxi3.httpurl.HttpUrl; import com.bwei.month_lianxi3.httputil.HttpUtils; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; public class Fragment01 extends Fragment { private static final String TAG = "Fragment01----"; private View view; private ListView listView; private List<One.DataBean> one_list=new ArrayList<>(); @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.page1, container, false); //初始化界面 initview(); return view; } private void initview() { listView = view.findViewById(R.id.page1_listview); } //懒加载 @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(isVisibleToUser){ //可见的时候在去加载网络 getDataFromNet(); } } private void getDataFromNet() { HttpUtils instance = HttpUtils.getInstance(); instance.get(HttpUrl.ONE); instance.setHttpUtilsListener(new HttpUtils.HttpUtilListener() { private MyBase1 base1; @Override public void getSuccess(String json) { //成功 Log.d(TAG, "列表数据 "+json); Gson gson=new Gson(); One one = gson.fromJson(json, One.class); List<One.DataBean> one_data = one.getData();//页面一数据的集合 //创建适配器刷新 base1 = new MyBase1(one_data,getContext()); listView.setAdapter(base1); base1.notifyDataSetChanged(); } @Override public void getError(String error) { //失败 } }); } }
四,page2_Fragment
package com.bwei.month_lianxi3.fragment; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ScrollView; import com.bwei.month_lianxi3.MyListView; import com.bwei.month_lianxi3.R; import com.bwei.month_lianxi3.adapter.MyBase2; import com.bwei.month_lianxi3.adapter.MyPageAdapter; import com.bwei.month_lianxi3.bean.Goods; import com.bwei.month_lianxi3.bean.LunBo; import com.bwei.month_lianxi3.httpurl.HttpUrl; import com.bwei.month_lianxi3.httputil.HttpUtils; import com.bwei.month_lianxi3.myapp.MyApp; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; public class Fragment02 extends Fragment { private static final String TAG = "Fragment02----"; private View view; private ViewPager viewPager; private MyListView listView; private List<ImageView> lunbo_list=new ArrayList<>();//轮播图数据 private List<Goods.DataBean> goods_list=new ArrayList<>();//商品数据 private List<ImageView> shape_list=new ArrayList<>();//小圆点数据 private PullToRefreshScrollView pullToRefreshScrollView; private MyPageAdapter myPageAdapter; private MyBase2 myBase2; private MyHandler myHandler=new MyHandler(); private LinearLayout linearLayout; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.page2, container, false); //初始化数据 initview(); myBase2 = new MyBase2(getContext(),goods_list); listView.setAdapter(myBase2); return view; } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(isVisibleToUser){ getDataViewPager(); }else{ if(shape_list!=null&&shape_list.size()>0){ shape_list.clear(); linearLayout.removeAllViews(); lunbo_list.clear(); myHandler.removeCallbacksAndMessages(null); } } } private void getDataViewPager() { HttpUtils instance = HttpUtils.getInstance(); instance.get(HttpUrl.LUNBO); instance.setHttpUtilsListener(new HttpUtils.HttpUtilListener() { @Override public void getSuccess(String json) { //成功 Log.d(TAG, "轮播图: "+json); Gson gson=new Gson(); LunBo lunBo = gson.fromJson(json, LunBo.class); List<LunBo.DataBean> data = lunBo.getData();//轮播图数据 for (int i = 0; i <data.size() ; i++) { ImageView imageView=new ImageView(getContext()); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//设置图片类型 String book_cover = data.get(i).getIcon();//获取轮播图地址 ImageLoader.getInstance().displayImage(book_cover,imageView, MyApp.getOptions());//添加图片 lunbo_list.add(imageView);//把图片放到轮播集合里 //添加小圆点 ImageView shape=new ImageView(getContext()); shape.setImageResource(R.drawable.selector_shape); //把小圆点添加到集合里 shape_list.add(shape); //把小圆点添加到布局里 linearLayout.addView(shape,i); } Log.d(TAG, "getSuccess: "+shape_list.size()); //默认第一个选中 shape_list.get(0).setSelected(true); //创建适配器刷新 myPageAdapter = new MyPageAdapter(lunbo_list); viewPager.setAdapter(myPageAdapter); //发送消息,开始轮播 myHandler.sendEmptyMessageDelayed(0,2000); //请求list数据列表getDataList getDataListview(); } @Override public void getError(String error) { //失败 } }); } public void getDataListview(){ HttpUtils instance = HttpUtils.getInstance(); instance.get(HttpUrl.TWO); instance.setHttpUtilsListener(new HttpUtils.HttpUtilListener() { @Override public void getSuccess(String json) { //成功 Log.d(TAG, "数据列表: "+json); Gson gson=new Gson(); Goods goods = gson.fromJson(json, Goods.class); List<Goods.DataBean> data = goods.getData();//商品数据集合 //将数据添加到集合里 goods_list.addAll(data); //创建适配器刷新 myBase2.notifyDataSetChanged(); pullToRefreshScrollView.onRefreshComplete(); } @Override public void getError(String error) { //失败 } }); } private void initview() { viewPager = view.findViewById(R.id.page2_viewpager); listView = view.findViewById(R.id.page2_listview); pullToRefreshScrollView = view.findViewById(R.id.pull_to_refresh_scrollview); linearLayout = view.findViewById(R.id.linearlayout); pullToRefreshScrollView.setMode(PullToRefreshBase.Mode.BOTH); pullToRefreshScrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) { //下拉刷新 getDataListview(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) { //上拉加载 getDataListview(); } }); } //开始轮播 class MyHandler extends Handler { @Override public void handleMessage(Message msg) { viewPager.setCurrentItem(viewPager.getCurrentItem()+1); for (int i = 0; i <shape_list.size() ; i++) { if(i==viewPager.getCurrentItem()%shape_list.size()){ shape_list.get(i).setSelected(true); }else{ shape_list.get(i).setSelected(false); } } myHandler.sendEmptyMessageDelayed(0,2000); } } @Override public void onDestroy() { super.onDestroy(); myHandler.removeCallbacksAndMessages(null); } }
五,多条目 适配器
package com.bwei.month_lianxi3.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bwei.month_lianxi3.R; import com.bwei.month_lianxi3.bean.One; import com.bwei.month_lianxi3.bean.One.DataBean; import com.bwei.month_lianxi3.myapp.MyApp; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; public class MyBase1 extends BaseAdapter { private List<One.DataBean> list; private Context context; public MyBase1(List<DataBean> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); switch (type){ case 0: ViewHolder holder; if(convertView==null){ convertView=View.inflate(context, R.layout.item1,null); holder=new ViewHolder(); holder.imageView1=convertView.findViewById(R.id.item1_imageview); holder.imageView2=convertView.findViewById(R.id.item1_imageview2); holder.t1=convertView.findViewById(R.id.item1_textview1); holder.t2=convertView.findViewById(R.id.item1_textview2); convertView.setTag(holder); }else{ holder= (ViewHolder) convertView.getTag(); } //赋值 holder.t1.setText(list.get(position).getText()); holder.t2.setText(list.get(position).getPasstime()); String big = list.get(position).getBimageuri(); String small = list.get(position).getImage0(); ImageLoader.getInstance().displayImage(small,holder.imageView1, MyApp.getOptions()); ImageLoader.getInstance().displayImage(big,holder.imageView2,MyApp.getOptions()); break; case 1: ViewHolder1 holder1; if(convertView==null){ convertView=View.inflate(context,R.layout.item2,null); holder1=new ViewHolder1(); holder1.item2_imageView1=convertView.findViewById(R.id.item2_imageview1); holder1.item2_textview=convertView.findViewById(R.id.item2_textview); convertView.setTag(holder1); }else{ holder1= (ViewHolder1) convertView.getTag(); } //赋值 holder1.item2_textview.setText(list.get(position).getScreen_name()); String profile_image = list.get(position).getProfile_image(); ImageLoader.getInstance().displayImage(profile_image,holder1.item2_imageView1,MyApp.getOptions()); break; } return convertView; } @Override public int getItemViewType(int position) { String type = list.get(position).getType(); //判断 如果是41 就返回大图,否则就是小图 if(type.equals("41")){ return 0; } return 1; } @Override public int getViewTypeCount() { return 2; } class ViewHolder{ ImageView imageView1,imageView2; TextView t1,t2; } class ViewHolder1{ ImageView item2_imageView1; TextView item2_textview; } }