展示+详情

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值