-------------MainActivity布局(轮播)-------------
<?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" > <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/vp"></android.support.v4.view.ViewPager> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btn" android:text="跳转" android:layout_alignParentBottom="true"/> </RelativeLayout>
---------------轮播图(请求接口)------------------
public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private Handler myHandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int index=viewPager.getCurrentItem(); index++; viewPager.setCurrentItem(index); sendEmptyMessageDelayed(0,1000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = findViewById(R.id.vp); Button btn=findViewById(R.id.btn); //设置按钮点击事件 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } }); if(NetStateUtil.isConn(this)){ Toast.makeText(this,"有网络",Toast.LENGTH_SHORT).show(); MyTask myTask=new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) {
//解析JSON串 Gson gson=new Gson(); ResultData resultData = gson.fromJson(jsonstr, ResultData.class); String imgStr = resultData.getData().getImages(); //字符串分隔-特殊 String[] split = imgStr.split("\\|"); //设置适配器 viewPager.setAdapter(new MyVpAdapter(MainActivity.this,split)); //发延迟消息 myHandler.sendEmptyMessageDelayed(0,1000); } });
//请求接口 myTask.execute("http://120.27.23.105/product/getProductDetail?pid=1&source=android"); }else{
//显示设置网络的对话框 NetStateUtil.showNoNetWorkDlg(this); } } }
public class MyVpAdapter extends PagerAdapter { private Context context; private String[] lists; private DisplayImageOptions options; public MyVpAdapter(Context context, String[] lists) { this.context = context; this.lists = lists; options=new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(false)//使用磁盘缓存 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式 .build(); } @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) { ImageView imageView=new ImageView(context); ImageLoader.getInstance().displayImage(lists[position%lists.length],imageView,options); //添加到viewPager中 container.addView(imageView); //返回当前的视图对象 return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // super.destroyItem(container, position, object); container.removeView((View)object); } }----------Main2Activity布局----------
<?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="zhanghaijiao.bawei.com.yuekao_month12.Main2Activity" > <com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/plv"></com.handmark.pulltorefresh.library.PullToRefreshListView> </RelativeLayout>
---------------Main2Activity代码-------------
public class Main2Activity extends AppCompatActivity { private PullToRefreshListView pullToRefreshListView; private MyAdapter adapter; private List<ResultData1.DataBean> data=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); pullToRefreshListView = findViewById(R.id.plv); //初使化 initPlv(); //请求网络数据 requestNetData(); } private void requestNetData() { MyTask myTask=new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson=new Gson(); ResultData1 resultData1 = gson.fromJson(jsonstr, ResultData1.class); data.clear(); data.addAll(resultData1.getData()); setlvAdapter(); //关闭 pullToRefreshListView.onRefreshComplete(); } });//请求接口 myTask.execute("http://120.27.23.105/product/getProductCatagory?cid=1"); }//设置适配器 public void setlvAdapter(){ if(adapter==null){ adapter=new MyAdapter(this,data); pullToRefreshListView.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } } private void initPlv() {//支持上拉加载,下拉刷新 pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);//为设置监听 pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { //刷新数据 requestNetData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { Toast.makeText(Main2Activity.this,"加载更多",Toast.LENGTH_SHORT).show(); new Handler().postDelayed(new Runnable() { @Override public void run() { //关闭 pullToRefreshListView.onRefreshComplete(); } },1000); } }); //添加条目点击事件(xlistview可以设置长按监听pullToRefreshListView没有长按监听/* pullToRefreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { data.remove(i); setlvAdapter(); } });*/ } }
------------------自定义Gridview------------------
public class MyGridView extends GridView {
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int newHeight=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, newHeight);
}
}
-------------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" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv"/> <zhanghaijiao.bawei.com.yuekao_month12.MyGridView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/gv" android:numColumns="3" android:layout_below="@id/tv"></zhanghaijiao.bawei.com.yuekao_month12.MyGridView> </RelativeLayout>----------pullToRefreshListView适配器------------
public class MyAdapter extends BaseAdapter { private Context context; private List<ResultData1.DataBean> data; public MyAdapter(Context context, List<ResultData1.DataBean> data) { this.context = context; this.data = data; } @Override public int getCount() { return data.size(); } @Override public Object getItem(int i) { return data.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if(view==null){ holder=new ViewHolder(); view=View.inflate(context, R.layout.item,null); holder.tv=view.findViewById(R.id.tv); holder.gv=view.findViewById(R.id.gv); view.setTag(holder); }else { holder= (ViewHolder) view.getTag(); } holder.tv.setText(data.get(i).getName()); //给gridview设置适配器 List<ResultData1.DataBean.ListBean> list = data.get(i).getList(); holder.gv.setAdapter(new MyGvAdapter(context,list)); return view; } class ViewHolder{ TextView tv; GridView gv; } }
----------GridView布局--------------
<?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:layout_width="80dp" android:layout_height="80dp" android:id="@+id/img"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv" android:layout_below="@id/img"/> </RelativeLayout>
-----------------GridView适配器-------------------public class MyGvAdapter extends BaseAdapter { private Context context; private List<ResultData1.DataBean.ListBean> list; private DisplayImageOptions options; public MyGvAdapter(Context context, List<ResultData1.DataBean.ListBean> list) { this.context = context; this.list = list; options=new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(false)//使用磁盘缓存 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式 .build(); } @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 holder; if(view==null){ holder=new ViewHolder(); view=View.inflate(context, R.layout.gitem,null); holder.tv=view.findViewById(R.id.tv); holder.img=view.findViewById(R.id.img); view.setTag(holder); }else { holder= (ViewHolder) view.getTag(); } holder.tv.setText(list.get(i).getName()); ImageLoader.getInstance().displayImage(list.get(i).getIcon(),holder.img,options); return view; } class ViewHolder { TextView tv; ImageView img; } }