XRecyclerView+MVP+glide显示

OkHttpUtils
public class OkHttpUtils {
private Handler handler=new Handler();
private static OkHttpUtils mInstance;
private OkHttpClient okHttpClient;

//私有构造
private OkHttpUtils(){
    //日志拦截
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    okHttpClient = new OkHttpClient.Builder()
            //日志拦截
            .addInterceptor(interceptor)
            //读
            .readTimeout(5,TimeUnit.SECONDS)
            //写
            .writeTimeout(5,TimeUnit.SECONDS)
            //连接超时
            .connectTimeout(5,TimeUnit.SECONDS)
            .build();


}

//单例模式
public static OkHttpUtils getmInstance() {
    if (mInstance==null){
        synchronized (OkHttpUtils.class){
            if (mInstance==null){
                mInstance=new OkHttpUtils();
            }
        }
    }
    return mInstance;
}

//post请求
public void doPost(HashMap<String,String> params,final OkHttpCallback okHttpCallback){
    //请求方法体
    FormBody.Builder formbody = new FormBody.Builder();
    for (Map.Entry<String,String> p:params.entrySet()){
        formbody.add(p.getKey(),p.getValue());
    }
    final RequestBody requestBody = formbody.build();
    Request request = new Request.Builder()
            .url(ShowApi.SHOW_UEL)
            .post(requestBody)
            .build();
    okHttpClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            if (okHttpCallback!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        okHttpCallback.failure("网络异常了哟!");
                    }
                });
            }
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (requestBody!=null){
                if (response.code()==200){
                    final String resulr = response.body().string();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            okHttpCallback.success(resulr);
                        }
                    });
                }
            }
        }
    });
}

}

OkHttpCallback接口
public interface OkHttpCallback {
void success(String result);
void failure(String msg);
}
Contract契约类
public interface CartContract {
public abstract class CartPresenter{
public abstract void getCart(HashMap<String,String> params);
}

interface ICartModel{
    void getCart(HashMap<String,String> params, ICartModelCallback iCartModelCallback);
}
interface ICartView{
    void success(List<CartBean.Cart> list);
    void failure(String msg);
}

}
CartModel
public class CartModel implements CartContract.ICartModel {
private Handler handler=new Handler();
@Override
public void getCart(HashMap<String, String> params, final ICartModelCallback callback) {
OkHttpUtils.getmInstance().doPost(params, new OkHttpCallback() {
//成功
@Override
public void success(final String result) {
handler.post(new Runnable() {
@Override
public void run() {
callback.success(result);
}
});
}
//失败
@Override
public void failure(final String msg) {
handler.post(new Runnable() {
@Override
public void run() {
callback.failure(msg);
}
});
}
});
}
}

ICartModelCallback接口

public interface ICartModelCallback {
void success(String result);
void failure(String msg);
}

CartPresenter
public class CartPresenter extends CartContract.CartPresenter{
private CartModel cartModel;
private CartContract.ICartView icartView;

public CartPresenter(CartContract.ICartView iCartView) {
    cartModel=new CartModel();
    this.icartView =iCartView ;
}

@Override
public void getCart(HashMap<String, String> params) {
    cartModel.getCart(params, new ICartModelCallback() {
        //成功回调
        @Override
        public void success(String result) {
            if(icartView!=null){
                CartBean cartBean = new Gson().fromJson(result, CartBean.class);
                icartView.success(cartBean.data);
            }
        }
        //失败回调
        @Override
        public void failure(String msg) {
            if (icartView!=null){
                icartView.failure(msg);
            }

        }
    });
}

}

CartAdapter
public class CartAdapter extends XRecyclerView.Adapter<CartAdapter.MyVh> {
private Context context;
private List<CartBean.Cart> list;

public CartAdapter(Context context){
    this.context = context;
    this.list = new ArrayList<>();
}

public void setData(List<CartBean.Cart> list) {
    this.list= list;
    notifyDataSetChanged();
}

@NonNull
@Override
public CartAdapter.MyVh onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.show_item_layout,viewGroup,false);
    return new MyVh(view);
}

@Override
public void onBindViewHolder(@NonNull CartAdapter.MyVh myVh, final int i) {
   final CartBean.Cart cart = list.get(i);
    String[] img = cart.images.split("\\|");
    if (img!=null&&img.length>0){
        Glide.with(context).load(img[0]).into(myVh.image);
    }
    myVh.title.setText(cart.title);
    myVh.price.setText(cart.price+"");
}

@Override
public int getItemCount() {
    //三目
    return list==null?0:list.size();
}

public class MyVh extends RecyclerView.ViewHolder {

    private ImageView image;
    private TextView title;
    private TextView price;
    private Button jia;
    private ImageView sdd;

    public MyVh(@NonNull View itemView) {
        super(itemView);
        image = itemView.findViewById(R.id.image);
        title = itemView.findViewById(R.id.title);
        price = itemView.findViewById(R.id.price);
        jia = itemView.findViewById(R.id.jia);
        sdd = itemView.findViewById(R.id.sdd);
    }
}

}

FragmentShow
public class FragmentThree extends Fragment implements CartContract.ICartView {
private ImageView back;
private EditText edSs;
private ImageView sd;
private XRecyclerView rv;
private CartAdapter cartAdapter;
private List<CartBean.Cart> list;
private CartPresenter cartPresenter;
private HashMap<String, String> map;
private String page=“1”;
private RelativeLayout rel;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragmentthree, container, false);
    return view;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    //获取资源id
    initView(view);
    //数据
    initData();

}
//数据
private void initData() {
    cartPresenter = new CartPresenter(this);

}

@Override
public void success(List<CartBean.Cart> list) {
    cartAdapter.setData(list);
}

@Override
public void failure(String msg) {

}

private void initView(View view) {
    back = (ImageView) view.findViewById(R.id.back);
    edSs = (EditText) view.findViewById(R.id.ed_ss);
    sd = (ImageView) view.findViewById(R.id.sd);
    rv = (XRecyclerView) view.findViewById(R.id.rv);
    rel = view.findViewById(R.id.rel);
    cartAdapter = new CartAdapter(getActivity());
    rv.setAdapter(cartAdapter);
    rv.setLayoutManager(new LinearLayoutManager(getActivity(),OrientationHelper.VERTICAL,false));
    sd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String ed = edSs.getText().toString();
            map = new HashMap<>();
            map.put("keywords","手机");
            map.put("page",page);
            cartPresenter.getCart(map);
            rel.setVisibility(View.INVISIBLE);

        }
    });
}

}
API
public class ShowApi {
public static final String SHOW_UEL=“http://www.zhaoapi.cn/product/searchProducts”;
}

CartBean
public class CartBean {
public String msg;//查询成功
public String code;
public List data;
public class Cart{
public String title;
public String pid;
public String pscid;
public String price;
public String images;
}
}

FragmentShow主布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <ImageView
            android:id="@+id/back"
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:src="@drawable/back"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"/>
        <EditText
            android:id="@+id/ed_ss"
            android:layout_width="260dp"
            android:layout_height="30dp"
            android:background="@drawable/shape"
            android:text="搜索"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="30dp"
            android:paddingLeft="15dp"/>
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:id="@+id/sd"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_alignParentRight="true"
                android:src="@drawable/caii"
                android:layout_marginTop="10dp"
                android:layout_marginRight="10dp"
                />
        </RelativeLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
        android:orientation="vertical">

        <RelativeLayout
            android:id="@+id/rel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="visible">
            <TextView
                android:id="@+id/zuijin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="最近搜索"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"/>
            <TextView
                android:id="@+id/duan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="短袖男"
                android:layout_below="@+id/zuijin"
                android:layout_marginLeft="10dp"
                android:background="@drawable/shape"
                />
        </RelativeLayout>
        <com.jcodecraeer.xrecyclerview.XRecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>

</LinearLayout>

cart_item_layout 子布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@mipmap/ic_launcher"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="5dp"/>
        <TextView
            android:id="@+id/title"
            android:layout_width="260dp"
            android:layout_height="wrap_content"
            android:text="商品标题"
            android:layout_toRightOf="@+id/image"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="5dp"
            android:lines="2"
            />
        <TextView
            android:id="@+id/price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="¥:0.0"
            android:layout_toRightOf="@+id/image"
            android:layout_below="@+id/title"
            android:textColor="#f00"/>
        <Button
            android:id="@+id/jia"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="加入购物车"
            android:layout_alignParentRight="true"
            android:layout_marginTop="10dp"/>
    </RelativeLayout>
</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值