//布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp">
</com.youth.banner.Banner>
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xrv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>
//MainActivity
public class Frag_01 extends Fragment implements DataCall<List<Goods>> {
private Banner banner;
private XRecyclerView xrv;
String tu1="http://www.zhaoapi.cn/images/quarter/ad1.png";
String tu2="http://www.zhaoapi.cn/images/quarter/ad2.png";
String tu3="http://www.zhaoapi.cn/images/quarter/ad3.png";
String tu4="http://www.zhaoapi.cn/images/quarter/ad4.png";
ArrayList<String> tlist = new ArrayList<>();
String url="http://www.zhaoapi.cn/product/searchProducts?keywords=笔记本&page=1";
ArrayList<Goods> list = new ArrayList<>();
private ListPersenter listPersenter;
private StagAdapter stagAdapter;
private LinearLayoutManager linearLayoutManager;
private GridLayoutManager gridLayoutManager;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_01,container,false);
banner = view.findViewById(R.id.banner);
xrv = view.findViewById(R.id.xrv);
tlist.add(tu1);
tlist.add(tu2);
tlist.add(tu3);
tlist.add(tu4);
banner.setImages(tlist);
banner.setImageLoader(new Images());
banner.start();
//调用P层
listPersenter = new ListPersenter(this);
listPersenter.get(url);
stagAdapter = new StagAdapter(getContext(), list);
/*linearLayoutManager = new LinearLayoutManager(getContext());
xrv.setLayoutManager(linearLayoutManager);
xrv.setAdapter(stagAdapter);
xrv.refresh();*/
gridLayoutManager = new GridLayoutManager(getContext(),2);
xrv.setLayoutManager(gridLayoutManager);
xrv.setAdapter(stagAdapter);
xrv.refresh();
return view;
}
@Override
public void success(List<Goods> goods) {
xrv.loadMoreComplete();
xrv.refreshComplete();
list.addAll(goods);
stagAdapter.notifyDataSetChanged();
}
@Override
public void fail(Result result) {
Toast.makeText(getActivity(),"失败",Toast.LENGTH_LONG).show();
}
class Images extends ImageLoader{
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
instance.displayImage((String) path,imageView);
}
}
}
//适配器
public class StagAdapter extends XRecyclerView.Adapter<StagAdapter.MyViewHolder> {
private Context context;
private ArrayList<Goods> list;
public StagAdapter(Context context, ArrayList<Goods> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public StagAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.item,null);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull StagAdapter.MyViewHolder myViewHolder, int i) {
myViewHolder.tv1.setText(list.get(i).getTitle());
myViewHolder.tv2.setText("¥"+list.get(i).getPrice()+"");
String images = list.get(i).getImages();
String[] split = images.split("\\|");
Glide.with(context).load(split[0]).into(myViewHolder.iv1);
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private final ImageView iv1;
private final TextView tv1;
private final TextView tv2;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
iv1 = itemView.findViewById(R.id.iv1);
tv1 = itemView.findViewById(R.id.tv1);
tv2 = itemView.findViewById(R.id.tv2);
}
}
}
//MApp
public class MApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader instance = ImageLoader.getInstance();
instance.init(build);
}
}
//接口
public interface DataCall<T> {
void success(T t);
void fail(Result result);
}
Goods
public class Goods {
/**
* bargainPrice : 11800
* createtime : 2017-10-10T17:33:37
* detailUrl : https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends
* images : https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg
* itemtype : 0
* pid : 57
* price : 5199
* pscid : 40
* salenum : 4343
* sellerid : 1
* subhead : 【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统
* title : 小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银
*/
private int bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int itemtype;
private int pid;
private int price;
private int pscid;
private int salenum;
private int sellerid;
private String subhead;
private String title;
public int getBargainPrice() {
return bargainPrice;
}
public void setBargainPrice(int bargainPrice) {
this.bargainPrice = bargainPrice;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getDetailUrl() {
return detailUrl;
}
public void setDetailUrl(String detailUrl) {
this.detailUrl = detailUrl;
}
public String getImages() {
return images;
}
public void setImages(String images) {
this.images = images;
}
public int getItemtype() {
return itemtype;
}
public void setItemtype(int itemtype) {
this.itemtype = itemtype;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getPscid() {
return pscid;
}
public void setPscid(int pscid) {
this.pscid = pscid;
}
public int getSalenum() {
return salenum;
}
public void setSalenum(int salenum) {
this.salenum = salenum;
}
public int getSellerid() {
return sellerid;
}
public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}
public String getSubhead() {
return subhead;
}
public void setSubhead(String subhead) {
this.subhead = subhead;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Utils
public class Utils {
public static String get(String url) {
OkHttpClient okHttpClient = new OkHttpClient();
Request build = new Request.Builder().url(url).get().build();
Call call = okHttpClient.newCall(build);
try {
Response response = call.execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
//Modle
public class ListModle {
public static Result get(String url) {
String s = Utils.get(url);
Type type = new TypeToken<Result<List<Goods>>>() {
}.getType();
Gson gson = new Gson();
Result result = gson.fromJson(s, type);
return result;
}
}
//Persenter
public class ListPersenter {
private DataCall dataCall;
public ListPersenter(DataCall dataCall) {
this.dataCall = dataCall;
}
Handler handler = new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Result result = (Result) msg.obj;
if (result.getCode().equals("0")){
dataCall.success(result.getData());
}else {
dataCall.fail(result);
}
}
};
public void get(final String url) {
new Thread(new Runnable() {
@Override
public void run() {
Result result = ListModle.get(url);
Message message = handler.obtainMessage();
message.obj=result;
handler.sendMessage(message);
}
}).start();
}
}