京東首頁自定義輪播圖
model
package com.bawei.com.moniti.Model;
import com.bawei.com.moniti.pojo.CartBean;
import com.bawei.com.moniti.views.CartActivity;
import java.util.Map;
/**
* Created by lenovo on 2018/3/4.
*/
public interface model {
void shouyemodel(String Url, Map<String, String> parmar, ShouYeListlinese shouYeListlinese); void goodmodel(String Url, Map<String, String> parmar, GoodsListlinese goodsListlinese); //重新整理 void doRefresh(String ur, Map<String,String> params,shuaxinListent shuaxinListent); //下拉載入 void doLoadMore(String ur, Map<String,String> params,shanglaListent shanglaListent); //xq void xqmodel(String Url, Map<String, String> parmar,xqListent x1linese); //add void addmodel(String Url, Map<String, String> parmar,addListlinese x1linese); //add void Cartmodel(String Url, Map<String, String> parmar,CartListlinese x1linese); //總和 double sumV(CartBean goodsBean);
}
model的實現層
package com.bawei.com.moniti.Model;
import android.util.Log;
import com.bawei.com.moniti.pojo.AddCartBean;
import com.bawei.com.moniti.pojo.CartBean;
import com.bawei.com.moniti.pojo.GoodsBean;
import com.bawei.com.moniti.pojo.RetrofitUtils;
import com.bawei.com.moniti.pojo.ShouYeBean;
import com.bawei.com.moniti.pojo.XqBean;
import java.util.List;
import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import static android.R.id.list;
/**
* Created by lenovo on 2018/3/4.
*/
public class ModelImp implements model {
@Override
public void shouyemodel(String Url, Map<String, String> parmar, final ShouYeListlinese shouYeListlinese) {
RetrofitUtils.getInstence()
.API()
.getshouye(Url, parmar)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ShouYeBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ShouYeBean value) {
Log.e("Tag", value.getMsg() + "");
shouYeListlinese.ShouYeScuccer(value);
}
@Override
public void onError(Throwable e) {
Log.e("Tag", e.toString() + "");
shouYeListlinese.ShouYeError(e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public void goodmodel(String Url, Map<String, String> parmar, final GoodsListlinese goodsListlinese) {
RetrofitUtils.getInstence()
.API()
.getGoods(Url, parmar)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<GoodsBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(GoodsBean value) {
Log.e("Tag", value.getMsg() + "");
goodsListlinese.GoodsScuccer(value);
}
@Override
public void onError(Throwable e) {
Log.e("Tag", e.toString() + "");
goodsListlinese.GoodsError(e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public void doRefresh(String ur, Map<String, String> params, final shuaxinListent shuaxinListent) {
RetrofitUtils.getInstence()
.API()
.getGoods(ur, params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<GoodsBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(GoodsBean value) {
Log.e("Tag", value.getMsg() + "");
shuaxinListent.shuaxinScuccer(value);
}
@Override
public void onError(Throwable e) {
Log.e("Tag", e.toString() + "");
shuaxinListent.shuaxinError(e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public void doLoadMore(String ur, Map<String, String> params, final shanglaListent shanglaListent) {
RetrofitUtils.getInstence()
.API()
.getGoods(ur, params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<GoodsBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(GoodsBean value) {
Log.e("Tag", value.getMsg() + "");
shanglaListent.shanglaScuccer(value);
}
@Override
public void onError(Throwable e) {
Log.e("Tag", e.toString() + "");
shanglaListent.shanglaError(e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public void xqmodel(String Url, Map<String, String> parmar, final xqListent x1linese) {
RetrofitUtils.getInstence()
.API()
.getXq(Url, parmar)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<XqBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(XqBean value) {
x1linese.xqScuccer(value);
}
@Override
public void onError(Throwable e) {
x1linese.xqError(e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public void addmodel(String Url, Map<String, String> parmar, final addListlinese x1linese) {
RetrofitUtils.getInstence()
.API()
.getadd(Url, parmar)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<AddCartBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(AddCartBean value) {
Log.e("Tag", value.getMsg());
x1linese.addScuccer(value);
}
@Override
public void onError(Throwable e) {
x1linese.addError(e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public void Cartmodel(String Url, Map<String, String> parmar, final CartListlinese x1linese) {
RetrofitUtils.getInstence()
.API()
.getCart(Url, parmar)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<CartBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(CartBean value) {
Log.e("Tag", value.getMsg());
x1linese.CartScuccer(value);
}
@Override
public void onError(Throwable e) {
Log.e("Tag", e.toString());
x1linese.CartError(e.toString());
}
@Override
public void onComplete() {
}
});
}
@Override
public double sumV(CartBean goodsBean) {
double sum = 0;
List<CartBean.DataBean> list = goodsBean.getData();
Log.e("TAG", "DSADSSA" + goodsBean.toString() + "");
for (int i = 0; i < list.size(); i++) {
List<CartBean.DataBean.ListBean> chflas = list.get(i).getList();
for (int j = 0; j < chflas.size(); j++) {
Boolean chflas1 = chflas.get(j).isChild_flag();
if (chflas1) {
double price = chflas.get(j).getPrice();
sum = sum + price;
}
}
}
return sum;
}
}
首頁介面
package com.bawei.com.moniti.Model;
import com.bawei.com.moniti.pojo.ShouYeBean;
/**
* Created by lenovo on 2018/3/4.
*/
public interface ShouYeListlinese {
void ShouYeScuccer(ShouYeBean shouYeBean);
void ShouYeError(String json);
}
建一個類
package com.bawei.com.moniti.views;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.bawei.com.moniti.R;
import com.bawei.com.moniti.pojo.ShouYeBean;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
import java.util.List;
/**
* Created by lenovo on 2018/3/4.
*/
public class MyViewGrop extends RelativeLayout {
private Context Mcontext;
private ViewPager viewById;
private LinearLayout ll_buttom;
private MyHandler2 myHandler2;
public MyViewGrop(Context context) {
this(context, null);
}
public MyViewGrop(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyViewGrop(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//將佈局繪製到控制元件
LayoutInflater from = LayoutInflater.from(context);
//載入佈局myviewgrop
View view = from.inflate(R.layout.myviewgrop, this, true);
//獲取id
viewById = view.findViewById(R.id.viewpager);
ll_buttom = view.findViewById(R.id.ll_buttom);
}
public void setMyAdapter(Context context, List<ShouYeBean.DataBean> list) {
//實力化介面卡
MyAdapter myAdapter = new MyAdapter(context, list);
//獲取介面卡
viewById.setAdapter(myAdapter);
//寫一個集合用於放指示器,也就是小圓點
final ArrayList<ImageView> points = new ArrayList<>();
//將指示器新增進去
for (int i = 0; i < list.size(); i++) {
//
ImageView point = new ImageView(context);
//給圖片新增選中和未選中的狀態
point.setBackgroundResource(R.drawable.aa);
//新增到集合
points.add(point);
//放入下面的額線性佈局
ll_buttom.addView(point);
}
//預設第一個店選中
points.get(0).setSelected(true);
//繫結viewpager的滑動時間
viewById.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
position = position % points.size();
for (int i = 0; i < points.size(); i++) {
if (i == position) {
//如果滑動的圖片下標等於圓點下標就是圓點選中
points.get(position).setSelected(true);
} else {
//不等於就不選中
points.get(i).setSelected(false);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//2.手動的可以無限滑動 可以左滑
viewById.setCurrentItem(points.size() * 100000);//設定當前展示中間某個足夠大的位置
// viewById.setCurrentItem(Integer.MAX_VALUE/2);
//設定自動輪播
myHandler2 = new MyHandler2();
autoPlay();
//
}
private void autoPlay() {
myHandler2.sendEmptyMessageDelayed(0, 1000);
}
//介面卡
class MyAdapter extends PagerAdapter {
private Context context;//上下文
private List<ShouYeBean.DataBean> list;//集合
public MyAdapter(Context context, List<ShouYeBean.DataBean> list) {
this.context = context;
this.list = list;
}
@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) {
//因為是無線輪播,所以要魔除集合長度再能獲取正常下標
position = position % list.size();
//寫一個ImageView控制元件
ImageView imageView = new ImageView(context);
//使用Glide載入圖片
Glide.with(context).load(list.get(position).getIcon()).into(imageView);
//加入容器
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// super.destroyItem(container, position, object);
//銷燬檢視
container.removeView((View) object);
}
}
//自動輪播
class MyHandler2 extends Handler {
@Override
public void handleMessage(Message msg) {
//顯示下一頁的訊息
viewById.setCurrentItem(viewById.getCurrentItem() + 1);
// //再次傳送
myHandler2.sendEmptyMessageDelayed(0, 1000);
}
}
}
//Framage
package com.bawei.com.moniti.Framage;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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.Toast;
import com.bawei.com.moniti.Model.ModelImp;
import com.bawei.com.moniti.R;
import com.bawei.com.moniti.persters.persterImp;
import com.bawei.com.moniti.pojo.ShouYeBean;
import com.bawei.com.moniti.views.MyViewGrop;
import com.bawei.com.moniti.views.ShouYeView;
import java.util.List;
/**
* Created by lenovo on 2018/3/4.
*/
public class frament1 extends Fragment implements ShouYeView {
private MyViewGrop banner;
private MyHandler myHandler;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.item_f1, null);
persterImp imp = new persterImp();
imp.perster(new ModelImp(), this);
banner = (MyViewGrop) inflate.findViewById(R.id.banner);
myHandler = new MyHandler();
return inflate;
}
@Override
public void ShouYeViewSuccorc(ShouYeBean shouYeBean) {
List<ShouYeBean.DataBean> data = shouYeBean.getData();
Message message = new Message();
message.obj = data;
myHandler.sendMessage(message);
}
@Override
public void ShouYeViewError(String json) {
}
//建立Handler物件
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
List<ShouYeBean.DataBean> data1 = (List<ShouYeBean.DataBean>) msg.obj;
//在這裡設定介面卡
banner.setMyAdapter(getActivity(),data1);
}
}
}
//xml佈局