Api
//商品详情 @GET("small/commodity/v1/findCommodityDetailsById") Observable<DetailBean> getDetaildata(@Header("userId") int userId, @Header("sessionId") String sessionId, @Query("commodityId") int commodityId); //商品搜索 @GET("small/commodity/v1/findCommodityByKeyword") Observable<SearchBean> getSreachdata(@Query("page") int page, @Query("count") int count, @Query("keyword") String keyword); App //缓存大小+路径 DiskCacheConfig config = DiskCacheConfig.newBuilder(this) .setBaseDirectoryName("erzhou") .setMaxCacheSize(30*ByteConstants.MB) .setBaseDirectoryPath(Environment.getDataDirectory()) .build(); ImagePipelineConfig build = ImagePipelineConfig.newBuilder(this) .setMainDiskCacheConfig(config) .build(); Fresco.initialize(this);
IMainPresenter
public class IMainPresenter extends IBasePresenter<IMainView>{ private final Api api; public IMainPresenter() { HttpUtils instance = HttpUtils.getInstance(); api = instance.api; } //查询商品 public void getSearchsData(int page,int count,String keyword){ Observable<SearchBean> sreachdata = api.getSreachdata(page, count, keyword); sreachdata.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<SearchBean>() { @Override public void accept(SearchBean searchBean) throws Exception { getView().success(searchBean); } }); } public void getDetailsData(int userId,String sessionId,int commodityId){ Observable<DetailBean> detaildata = api.getDetaildata(userId, sessionId, commodityId); detaildata.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<DetailBean>() { @Override public void accept(DetailBean detailBean) throws Exception { getView().success(detailBean); } }); } }
DetailPage
public class DetailPageActivity extends AppCompatActivity implements IMainView { @BindView(R.id.xq_price) TextView xqPrice; @BindView(R.id.xq_xnum) TextView xqXnum; @BindView(R.id.xq_title) TextView xqTitle; @BindView(R.id.banner) FlyBanner banner; private FlyBanner xq_banner; private IMainPresenter presenter; private WebView webview; private DetailBean.ResultBean goodlist; int userId; String sessionId; private int commodityId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.details_page); ButterKnife.bind(this); xq_banner = findViewById(R.id.banner); webview = findViewById(R.id.webview); //初始化p层 presenter = new IMainPresenter(); //获取当前商品的id Intent intent = getIntent(); int commodityId = intent.getIntExtra("commodityId", 0); Log.i("bbb", "" + commodityId); presenter.setView(this); presenter.getDetailsData(userId,sessionId,commodityId); } @Override public void success(Object oo) { DetailBean detailBean = (DetailBean) oo; goodlist = detailBean.getResult(); commodityId = goodlist.getCommodityId(); //创建线程 runOnUiThread(new Runnable() { private ArrayList<String> imageUrl; @Override public void run() { //------------------------------------------------网页------------------------------------------------------ //可以设置支持缩放 webview.getSettings().setSupportZoom(true); //设置扩大比列的缩放 webview.getSettings().setUseWideViewPort(true); webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); webview.getSettings().setLoadWithOverviewMode(true); webview.setWebChromeClient(new WebChromeClient()); webview.loadDataWithBaseURL(null, goodlist.getDetails(), "text/html", "utf-8", null); String commodityName = goodlist.getCommodityName(); xqTitle.setText(commodityName); int price = goodlist.getPrice(); xqPrice.setText("¥" + price); int saleNum = goodlist.getSaleNum(); xqXnum.setText("销量:" + saleNum); //--------------------------------------------图片展示----------------------------------------------- String picture = goodlist.getPicture(); String[] strings = picture.split(","); imageUrl = new ArrayList<>(); for (int i = 0; i < strings.length; i++) { imageUrl.add(strings[i]); imageUrl.get(i); } xq_banner.setImagesUrl(imageUrl); } }); }
}
查询
public class SearchActivity extends AppCompatActivity implements IMainView { @BindView(R.id.back) ImageView back; @BindView(R.id.edit) EditText edit; @BindView(R.id.serlistview) RecyclerView serlistview; @BindView(R.id.image) ImageView image; @BindView(R.id.text) TextView text; @BindView(R.id.find) ImageView find; private IMainPresenter presenter; private int page = 1; private int count = 30; private String keyword; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); ButterKnife.bind(this); presenter = new IMainPresenter(); presenter.setView(this); find.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String s = edit.getText().toString(); presenter.getSearchsData(page, count, s); } }); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); //创建布局 GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2); serlistview.setLayoutManager(gridLayoutManager); //获得传过来的值 Intent intent = getIntent(); keyword = intent.getStringExtra("keyname"); Log.i("aaa", "" + keyword); edit.setText(keyword); } @Override public void success(Object oo) { SearchBean searchBean = (SearchBean) oo; List<SearchBean.ResultBean> result = searchBean.getResult(); if (result.size() == 0) { image.setVisibility(View.VISIBLE); text.setVisibility(View.VISIBLE); serlistview.setVisibility(View.GONE); } else { image.setVisibility(View.GONE); text.setVisibility(View.GONE); serlistview.setVisibility(View.VISIBLE); //设置适配器 SearchAdapter searchAdapter = new SearchAdapter(SearchActivity.this, result); serlistview.setAdapter(searchAdapter); } } @Override protected void onDestroy() { super.onDestroy(); presenter.detachView(); } }
//查询Adapter
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder> { Context context; List<SearchBean.ResultBean> list; public SearchAdapter(Context context, List<SearchBean.ResultBean> list) { this.context = context; this.list = list; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = View.inflate(context, R.layout.rxxpitem,null); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) { ViewHolder viewHolders = viewHolder; final int commodityId = list.get(i).getCommodityId(); viewHolders.name.setText(list.get(i).getCommodityName()); viewHolders.price.setText(""+list.get(i).getPrice()); Glide.with(context).load(list.get(i).getMasterPic()).into(viewHolders.image); viewHolders.view.setTag(i); viewHolders.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("aaa",""+commodityId); Intent intent = new Intent(context, DetailPageActivity.class); intent.putExtra("commodityId",commodityId); context.startActivity(intent); } }); } @Override public int getItemCount() { return list.size(); } public class ViewHolder extends RecyclerView.ViewHolder { public ImageView image; public TextView name,price; public View view; public ViewHolder(@NonNull View itemView) { super(itemView); this.view = itemView; image = itemView.findViewById(R.id.image); name = itemView.findViewById(R.id.name); price = itemView.findViewById(R.id.price); } } }
xml
<LinearLayout 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="wrap_content" android:orientation="vertical" tools:context=".view.activity.MainActivity"> <android.support.v7.widget.CardView android:layout_width="150dp" android:layout_height="match_parent" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" app:cardElevation="10dp" app:cardCornerRadius="10dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/image" android:layout_width="80dp" android:layout_height="100dp" android:layout_gravity="center" /> <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="1" android:ellipsize="end" android:gravity="center" android:text="123" android:textColor="@color/colorPrimary"/> <TextView android:id="@+id/price" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="123" android:textColor="@color/colorAccent"/> </LinearLayout> </android.support.v7.widget.CardView> </LinearLayout> xml
<LinearLayout 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:orientation="vertical" tools:context=".view.activity.MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.recker.flybanner.FlyBanner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="350dp"></com.recker.flybanner.FlyBanner> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <TextView android:id="@+id/xq_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="价格" android:textColor="#f00" android:textSize="30sp" /> <TextView android:id="@+id/xq_xnum" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="240dp" android:layout_marginTop="4dp" android:text="销量" android:textSize="25sp" /> </LinearLayout> <TextView android:id="@+id/xq_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="5dp" android:text="产品介绍" android:textSize="20sp" /> </LinearLayout> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="30dp" android:layout_marginTop="10dp"></WebView> </LinearLayout> </ScrollView> </RelativeLayout> </LinearLayout>