1. 程式人生 > >Android_實現商品詳情的展示頁及佈局

Android_實現商品詳情的展示頁及佈局

,,記得要匯入依賴及許可權

商品詳情頁的model層

public class RecyclerDetailsModel {
    //自己定義的方法
    public void receive(String pid, final IRecyclerDetailsModel iRecyclerDetailsModel) {
        String url="http://120.27.23.105/product/getProductDetail";
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("pid"
, pid); OkHttpUtils.getInstance().doPost(url, hashMap, new CallBack() { @Override public void onSuccess(String str) { if (str != null) { Gson gson = new Gson(); RecyclerDetailsBean rdBean = gson.fromJson(str, RecyclerDetailsBean.class); if
(rdBean != null) { iRecyclerDetailsModel.onSuccess(rdBean); } } } @Override public void onFailed(String message) { iRecyclerDetailsModel.onFailed(); } }); } }

商品詳情頁的model層的藉口

public interface IRecyclerDetailsModel {

    void onSuccess(RecyclerDetailsBean rdBean);

    void onFailed();

}

商品詳情頁的view層介面

public interface IRecyclerDetailsPresenter {

    void onSuccess(RecyclerDetailsBean rdBean);

    void onFailed();

}

商品詳情頁的presenter層

public class RecyclerDetailsPresenter implements IRecyclerDetailsModel {

    private RecyclerDetailsModel recyclerDetailsModel;
    private IRecyclerDetailsPresenter irecyclerDetailsPresenter;

    public RecyclerDetailsPresenter(IRecyclerDetailsPresenter irecyclerDetailsPresenter) {
        this.irecyclerDetailsPresenter = irecyclerDetailsPresenter;
        recyclerDetailsModel = new RecyclerDetailsModel();
    }

    public void receive(String pid) {
        recyclerDetailsModel.receive(pid, this);
    }

    @Override
    public void onSuccess(RecyclerDetailsBean rdBean) {
        irecyclerDetailsPresenter.onSuccess(rdBean);
    }

    @Override
    public void onFailed() {
        irecyclerDetailsPresenter.onFailed();
    }
}

主要的view層

public class RecyclerDetailsActivity extends AppCompatActivity implements IRecyclerDetailsPresenter,IAddShopCarPresenter{
    private int pid = 71;
    private RecyclerDetailsPresenter recyclerDetailsPresenter;
    private ListView listView;
    private RecyclerDetailsBean.DataBean data;
    private TextView title;
    private TextView price;
    private String urlImg;
    private String[] split;
    private String urlTitle;
    private double urlPrice;
    private ArrayList<String> lists = new ArrayList<String>();
    private ViewPager viewPager;
    private DetailsAdapter adapter;
    private Button join;
    private int pids;
    private AddShopCarPresenter addShopCarPresenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_details);
        initview();
        //Intent intent = getIntent();
        //pid = intent.getIntExtra("pid", this.pid);
        //獲取商品詳情頁的p層
        recyclerDetailsPresenter = new RecyclerDetailsPresenter(this);
        //呼叫商品詳情頁的獲取pid的方法
        recyclerDetailsPresenter.receive(pid + "");
        //將商品新增到購物車的p層
        addShopCarPresenter = new AddShopCarPresenter(this);
    }

    /**
     * 獲取控制元件的方法
     *
     * */
    private void initview() {
        //輪播展示圖片的控制元件
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        //點選加入購物車的控制元件
        join = (Button) findViewById(R.id.join);
        title = (TextView) findViewById(R.id.title);
        price = (TextView) findViewById(R.id.price);
    }
    /*
    * 實現成功的方法
    * */
    @Override
    public void onSuccess(RecyclerDetailsBean rdBean) {
        /**
         * 從集合獲取資料,並賦值
         */
        data = rdBean.getData();
        pids = data.getPid();
        urlImg = data.getImages();
        split = urlImg.split("\\|");
        urlTitle = data.getTitle();
        urlPrice = data.getPrice();
        title.setText(urlTitle);
        price.setText(urlPrice + "");
        /**
         * 將圖片做成無限輪播
         * 配置介面卡
         */
        adapter = new DetailsAdapter(RecyclerDetailsActivity.this, split);
        viewPager.setAdapter(adapter);
        /**
         * 點選加入購物車的按鈕
         */
        join.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View view) {
                /*Toast.makeText(RecyclerDetailsActivity.this, ImageLoaderApp.sql.getInt("id", 0)+"", Toast.LENGTH_SHORT).show();*/
                //傳入加入購物車的欄位
                addShopCarPresenter.receive("android", 3381+"", pids + "");
            }
        });
    }

    @Override
    public void onSuccess(String msg) {
        Toast.makeText(RecyclerDetailsActivity.this, msg, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onFailed() {

    }

    /**
     * 跳轉購物車
     * @param view
     */
    public void shopcar(View view){
        Intent intent = new Intent(RecyclerDetailsActivity.this, ShoppingCartActivity.class);
        startActivity(intent);
    }
}

圖片輪播介面卡

/**
 * 詳情頁的圖片的無限輪播
 */

public class DetailsAdapter extends PagerAdapter {

    private Context context;
    private String[] split;

    public DetailsAdapter(Context context, String[] split) {
        this.context = context;
        this.split = split;
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //新增圖片到佈局中
        View view = View.inflate(context, R.layout.layout_detailviewpager, null);
        ImageView img = view.findViewById(R.id.img);
        Glide.with(context).load(split[position%split.length]).into(img);
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }
}

RecyclerDetailsActivity 的xml佈局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="250dp"></android.support.v4.view.ViewPager>

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/viewPager"
        android:text="標題"
        android:textSize="22sp" />

    <TextView
        android:id="@+id/price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:text="價格"
        android:textColor="#F00"
        android:textSize="22sp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        >
        <Button
            android:id="@+id/shopcar"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:text="購物車"
            android:onClick="shopcar"
            />
        <Button
            android:id="@+id/join"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:text="加入購物車" />

    </LinearLayout>


</RelativeLayout>

介面卡的佈局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img"
        android:scaleType="fitXY"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

相關推薦

Android_實現商品詳情展示佈局

,,記得要匯入依賴及許可權 商品詳情頁的model層 public class RecyclerDetailsModel { //自己定義的方法 public void receive(String pid, final IRecyc

【Python web 開發】viewset 實現商品詳情的介面

我們如何來完成商品詳情頁的介面呢? 首先要配置一個商品詳情的url 按照我們正常的介面配法 ,應該是後面要加一個id 的,為什麼這裡沒有加id 呢? ,應該是rooter  register 的作用吧,等我在學習一遍基礎再來回答? 那麼我們再來寫viewset Mixin.Retriev

淘淘商城系列——實現商品詳情頁面展示

我相信大家通過上文的學習已經搭建好了商品詳情頁面展示工程,本文我將帶領大家一起實現商品詳情頁面展示。 首先我們來看一下商品詳情頁面程式碼,可以看到商品一般屬性在TbItem實體類中都是存在的,只是圖片需要特殊處理,因為TbItem實體類中圖片的欄位儲存的是以”

vue+iview實現table和分與後臺數據交互

姓名 mar 機構 handle use dep 史記 項目 catch 最近在項目中遇到使用table分頁的功能,所以分享出來給大家希望能夠對大家有幫助,話不多說直接上代碼 1 <template> 2 <div> 3

餓了麼專案---13、模組化程式設計,實現商品詳情頁面

import BScroll from 'better-scroll'; import cartcontrol from '../cartcontrol/cartcontrol.vue'; import ratingSelecte from '../ratingSelecte/ratingSelecte.v

利用微信公眾號實現商品展示和支付(1)

在較早隨筆《微信小程式結合後臺資料管理實現商品資料的動態展示、維護》中介紹過使用小程式實現商品的展示,其實基於對應的介面,我們使用H5頁面來開發基於公眾號的商品展示和支付,也是產不多的原理,不過H5頁面和小程式的介面處理程式碼有一些差異吧了,整體的實現思路倒是差不多的。本篇隨筆介紹基於H5頁面的開發,參照一些

利用微信公眾號實現商品展示和支付(2)

在前面隨筆《利用微信公眾號實現商品的展示和支付(1)》介紹了商品的列表和明細資訊的處理,本篇隨筆接著上一篇,繼續介紹關於商品的微信支付和購物車處理方面,其中微信支付裡面,也涉及到了獲取微信共享地址的處理,從而個更加方便錄入郵寄地址資訊;購物車可以從本地的localStorage物件進行獲取和處理,也可通過介面

day76_淘淘商城專案_09_商品詳情動態展示實現(jsp+redis) + FreeMarker模板引擎入門 + 商品詳情靜態化實現(Win版本的nginx作http伺服器)_匠心筆記

淘淘商城專案_09 1、商品詳情頁面展示,動態展示(jsp + redis) 1.1、工程搭建 1.1.1、pom檔案 1.1.2、框架整合 1.1.3、springmvc.xml

仿京東、天貓app的商品詳情的布局架構, 以及功能實現

enter layout 顯示 效果 寫上 idt theme brush 2.2.0 一、介紹 這個類是繼承自ImageView的,所以對於這個控件我們可以使用ImageView的所有屬性 二、使用準備, 在as 的 build.grade文件中寫上 compile ‘

iOS 相似淘寶商品詳情查看翻效果的實現

nim anim bool with animate resource tlab 更改 tro 基本思路: 1、設置一個 UIScrollView 作為視圖底層,而且設置分頁為兩頁 2、然後在第一個分頁上加入一個 UITableView 而且設置表格

vue實現淘寶商品詳情屬性選擇功能

line pan func sel eth AD 圖片 [1] urn 方法一是自己想出來的,方法二來自忘記哪裏看到的了 不知道是不是你要的效果: 方法一:利用input[type="radio"] css代碼: 1 input { 2

android 自定義ViewGroup實現仿淘寶的商品詳情

最近公司在新版本上有一個需要, 要在首頁新增一個滑動效果, 具體就是仿照X寶的商品詳情頁, 拉到頁面底部時有一個粘滯效果,  如下圖 X東的商品詳情頁,如果使用者繼續向上拉的話就進入商品圖文描述介面: 剛開始是想拿來主義,直接從網上找個現成的demo來用, 但是網上無一

iOS 類似淘寶商品詳情檢視翻效果的實現

基本思路: 1、設定一個 UIScrollView 作為檢視底層,並且設定分頁為兩頁 2、然後在第一個分頁上新增一個 UITableView 並且設定表格能夠上提載入(上拉操作即為讓檢視滾動到下一頁) 3、 在第二個分頁上新增一個 UIWebView 並且

商品詳情秒殺倒計時功能

詳情頁進入:就是前端點選連結,連結中有{goodsId}作為引數,後端@PathVarible 拿到這個id,然後去資料庫查詢對應的商品資訊,並顯示的一個功能。這裡有一個比較重要的就是秒殺倒計時功能:後端獲取秒殺開始時間和結束時間,以及系統當前時間,並定義剩餘時間變數和秒殺狀

自定義ViewGroup實現仿淘寶的商品詳情

最近公司在新版本上有一個需要, 要在首頁新增一個滑動效果, 具體就是仿照X寶的商品詳情頁, 拉到頁面底部時有一個粘滯效果,  如下圖 X東的商品詳情頁,如果使用者繼續向上拉的話就進入商品圖文描述介面: 剛開始是想拿來主義,直接從網上找個現成的demo來用, 但是網上無一

實現淘寶商品詳情toolbar 漸變、狀態列沉浸

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span><span style="font-

iOS 常見的商品詳情佈局

#pragma mark -Life Cycle-(void)dealloc{    [self removeObserver];}- (void)viewDidLoad {    [super viewDidLoad];    self.navigationItem.tit

電商網站商品模型之商品詳情設計方案

查詢 amp 多對一關系 int cor http 添加 com 托盤 如下設計方案參考淘寶和華為商城 SKU SPU的關系 SPU = Standard Product Unit (標準產品單位) SPU是商品信息聚合的最小單位,是一組可復用、易檢索的標準化信息的集合,該

商品詳情(food組件)

text itl 哪些 編程思想 如果 遮蓋 foo lan ima 前言 本節分為四大塊: 1. 商品詳情頁 food 組件(布局樣式、第三方插件庫better-scroll 的應用) 2. split 組件 3. ratingselect 組件 4. 評價列表

【轉載】八、商品詳情功能

nero tle 文件 tro 過濾器 price 搜索 應該 == 八、商品詳情頁功能 8.1.viewsets實現商品詳情頁接口 (1)商品詳情頁只需要多繼承一個類(mixins.RetrieveModelMixin)就可以了 class GoodsListV