① 關於android的購物車功能是怎麼實現的
主要代碼如下:是主要代碼,actvity中的代碼:{privateListdata;privateListViewmListView;;;privateTextViewtvRefresh;privateProgressBarbarRefresh;privateLinearLayoutclear;privateCheckBoxcheckBox_select_all;privateCheckBoxcheckBox_add;privateTextViewintegral_sum;privateintsum=0;privateint[]sumIntegral;privateContextcontext;
② 誰有android仿京東那樣的網上商城的源碼
聽你的語氣 應該是基本的 做個基本的樣式的系統, 其實這個很簡單。如果你沒有學習過資料庫設計,就想一下用生活的想法去設計表,或者說,在網上搜索一下人家怎麼設計表的,模仿一下也可以的,資料庫增刪改查,了解...
③ 【實踐】仿京東商城小程序(附源碼)
最近學習使用小程序開發開發了一款仿京東商城小程序效果如下:
仿京東商城小程序基本實現首頁搜索、商品分類列表、購物車等功能,項目結構如下:
購物車功能示例,在pages下創建shoppingCart.wxml文件:
樣式shoppingCart.wxss:
購物車實現的功能主要有選擇商品,加減商品數量、全選、反選、結算等,實現邏輯如下:
④ 關於android的購物車功能是怎麼實現的
1.頁面布局根布局用相對布局,其中有兩個子布局,有一個子布局null_layout來放空數據時需要展示的頁面visibility設為gone,另一個子布局就是你有數據顯示的樣子,請求伺服器購物車或者本地資料庫查詢時,若無則將null_layout的visibility設為visible,有則又設成gone就行2.這個邏輯不對啊,商品列表點一下不是應該去商品詳情,然後用戶自己再選擇加入購物車並選數量么,怎麼就直接加入購物車了...一般做購物車都會做本地資料庫,加入購物車按鈕被點擊就向本地插入一條數據到資料庫並發請求告訴後台也同步,商品數量是用戶選的,價格是自己算的(單價*數量),購物車顯示時查這個表就行
⑤ Android 自定義仿京東地址選擇器
public class AddressPickerViewextends RelativeLayout{
// recyclerView 選中Item 的顏色
private int defaultSelectedColor = Color.parseColor("#3D71FF");
// recyclerView 未選中Item 的顏色
private int defaultUnSelectedColor = Color.parseColor("#2c2c2c");
// 確定字體不可以點擊時候的顏色
private int defaultSureUnClickColor = Color.parseColor("#7F7F7F");
// 確定字體可以點擊時候的顏色
private int defaultSureCanClickColor = Color.parseColor("#3D71FF");
private ContextmContext;
private int defaultTabCount =3; //tab 的數量
private TabLayoutmTabLayout; // tabLayout
private RecyclerViewmRvList; // 顯示數據的RecyclerView
private StringdefaultProvince ="省份"; //顯示在上面tab中的省份
private StringdefaultCity ="城市"; //顯示在上面tab中的城市
private StringdefaultDistrict ="區縣"; //顯示在上面tab中的區縣
private ListmRvData; // 用來在recyclerview顯示的數據
private AddressAdaptermAdapter; // recyclerview 的adapter
private YwpAddressBeanmYwpAddressBean; // 總數據
private YwpAddressBean.AddressItemBeanmSelectProvice; //選中 省份bean
private YwpAddressBean.AddressItemBeanmSelectCity;//選中 城市bean
private YwpAddressBean.;//選中 區縣bean
private int mSelectProvicePosition =0; //選中 省份 位置
private int mSelectCityPosition =0;//選中 城市 位置
private int mSelectDistrictPosition =0;//選中 區縣 位置
private ;
public AddressPickerView(Context context) {
super(context);
init(context);
}
public AddressPickerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public AddressPickerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
/**
* 初始化
*/
private void init(Context context) {
mContext = context;
mRvData =new ArrayList<>();
// UI
View rootView =inflate(mContext, R.layout.address_picker_view, this);
// tablayout初始化
mTabLayout = (TabLayout) rootView.findViewById(R.id.tlTabLayout);
mTabLayout.addTab(mTabLayout.newTab().setText(defaultProvince));
mTabLayout.addTab(mTabLayout.newTab().setText(defaultCity));
mTabLayout.addTab(mTabLayout.newTab().setText(defaultDistrict));
mTabLayout.addOnTabSelectedListener(tabSelectedListener);
// recyclerview adapter的綁定
mRvList = (RecyclerView) rootView.findViewById(R.id.rvList);
mRvList.setLayoutManager(new LinearLayoutManager(context));
mAdapter =new AddressAdapter();
mRvList.setAdapter(mAdapter);
// 初始化默認的本地數據 也提供了方法接收外面數據
mRvList.post(new Runnable() {
@Override
public void run() {
initData();
}
});
}
/**
* 初始化數據
* 拿assets下的json文件
*/
private void initData() {
StringBuilder jsonSB =new StringBuilder();
try {
BufferedReader addressJsonStream =new BufferedReader(new InputStreamReader(mContext.getAssets().open("address.json")));
String line;
while ((line = addressJsonStream.readLine()) !=null) {
jsonSB.append(line);
}
}catch (IOException e) {
e.printStackTrace();
}
// 將數據轉換為對象
mYwpAddressBean =new Gson().fromJson(jsonSB.toString(), YwpAddressBean.class);
if (mYwpAddressBean !=null) {
mRvData.clear();
mRvData.addAll(mYwpAddressBean.getProvince());
mAdapter.notifyDataSetChanged();
}
}
/**
* 開放給外部傳入數據
* 暫時就用這個Bean模型,如果數據不一致就需要各自根據數據來生成這個bean了
*/
public void initData(YwpAddressBean bean) {
if (bean !=null) {
mSelectDistrict =null;
mSelectCity =null;
mSelectProvice =null;
mTabLayout.getTabAt(0).select();
mYwpAddressBean = bean;
mRvData.clear();
mRvData.addAll(mYwpAddressBean.getProvince());
mAdapter.notifyDataSetChanged();
}
}
//點確定
private void sure() {
if (mSelectProvice !=null &&
mSelectCity !=null &&
mSelectDistrict !=null) {
// 回調介面
if (mOnAddressPickerSureListener !=null) {
mOnAddressPickerSureListener.onSureClick(mSelectProvice.getN(), mSelectCity.getN(), mSelectDistrict.getN());
}
}else {
Toast.makeText(mContext, "地址還沒有選完整哦", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
// mYwpAddressBean = null;
}
/**
* TabLayout 切換事件
*/
TabLayout. =new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mRvData.clear();
switch (tab.getPosition()) {
case 0:
mRvData.addAll(mYwpAddressBean.getProvince());
mAdapter.notifyDataSetChanged();
// 滾動到這個位置
mRvList.smoothScrollToPosition(mSelectProvicePosition);
break;
case 1:
// 點到城市的時候要判斷有沒有選擇省份
if (mSelectProvice !=null) {
for (YwpAddressBean.AddressItemBean itemBean :mYwpAddressBean.getCity()) {
if (itemBean.getP().equals(mSelectProvice.getI()))
mRvData.add(itemBean);
}
}else {
Toast.makeText(mContext, "請您先選擇省份", Toast.LENGTH_SHORT).show();
}
mAdapter.notifyDataSetChanged();
// 滾動到這個位置
mRvList.smoothScrollToPosition(mSelectCityPosition);
break;
case 2:
// 點到區的時候要判斷有沒有選擇省份與城市
if (mSelectProvice !=null &&mSelectCity !=null) {
for (YwpAddressBean.AddressItemBean itemBean :mYwpAddressBean.getDistrict()) {
if (itemBean.getP().equals(mSelectCity.getI()))
mRvData.add(itemBean);
}
}else {
Toast.makeText(mContext, "請您先選擇省份與城市", Toast.LENGTH_SHORT).show();
}
mAdapter.notifyDataSetChanged();
// 滾動到這個位置
mRvList.smoothScrollToPosition(mSelectDistrictPosition);
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
};
/**
* 下面顯示數據的adapter
*/
class AddressAdapterextends RecyclerView.Adapter {
@Override
public ViewHolderonCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_address_text, parent, false));
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
final int tabSelectPosition =mTabLayout.getSelectedTabPosition();
holder.mTitle.setText(mRvData.get(position).getN());
holder.mTitle.setTextColor(defaultUnSelectedColor);
// 設置選中效果的顏色
switch (tabSelectPosition) {
case 0:
if (mRvData.get(position) !=null &&
mSelectProvice !=null &&
mRvData.get(position).getI().equals(mSelectProvice.getI())) {
holder.mTitle.setTextColor(defaultSelectedColor);
}
break;
case 1:
if (mRvData.get(position) !=null &&
mSelectCity !=null &&
mRvData.get(position).getI().equals(mSelectCity.getI())) {
holder.mTitle.setTextColor(defaultSelectedColor);
}
break;
case 2:
if (mRvData.get(position) !=null &&
mSelectDistrict !=null &&
mRvData.get(position).getI().equals(mSelectDistrict.getI())) {
holder.mTitle.setTextColor(defaultSelectedColor);
}
break;
}
// 設置點擊之後的事件
holder.mTitle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 點擊 分類別
switch (tabSelectPosition) {
case 0:
mSelectProvice =mRvData.get(position);
// 清空後面兩個的數據
mSelectCity =null;
mSelectDistrict =null;
mSelectCityPosition =0;
mSelectDistrictPosition =0;
mTabLayout.getTabAt(1).setText(defaultCity);
mTabLayout.getTabAt(2).setText(defaultDistrict);
// 設置這個對應的標題
mTabLayout.getTabAt(0).setText(mSelectProvice.getN());
// 跳到下一個選擇
mTabLayout.getTabAt(1).select();
mSelectProvicePosition =position;
break;
case 1:
mSelectCity =mRvData.get(position);
// 清空後面一個的數據
mSelectDistrict =null;
mSelectDistrictPosition =0;
mTabLayout.getTabAt(2).setText(defaultDistrict);
// 設置這個對應的標題
mTabLayout.getTabAt(1).setText(mSelectCity.getN());
// 跳到下一個選擇
mTabLayout.getTabAt(2).select();
mSelectCityPosition =position;
break;
case 2:
mSelectDistrict =mRvData.get(position);
// 沒了,選完了,這個時候可以點確定了
mTabLayout.getTabAt(2).setText(mSelectDistrict.getN());
notifyDataSetChanged();
mSelectDistrictPosition =position;
sure();
break;
}
}
});
}
@Override
public int getItemCount() {
return mRvData.size();
}
class ViewHolderextends RecyclerView.ViewHolder {
TextViewmTitle;
ViewHolder(View itemView) {
super(itemView);
mTitle = (TextView) itemView.findViewById(R.id.itemTvTitle);
}
}
}
/**
* 點確定回調這個介面
*/
public interface OnAddressPickerSureListener {
void onSureClick(String proviceName,String cityName,String earaName);
}
public void setOnAddressPickerSure(OnAddressPickerSureListener listener) {
this.mOnAddressPickerSureListener = listener;
}
⑥ android仿淘寶購物車 如何實現
這個問題可以使用代理解決,當你能理解代理業就可以搞定了。
具體代碼沒有,你可以去網上找代理代碼,特別類似蘋果代碼的那種代理。
⑦ 關於android的購物車功能是怎麼實現的
你想問的是界面還是代碼,個人認為代碼應該是後台寫好的,android端只需要點擊添加時,傳一些參數給伺服器,伺服器處理結果。點擊跳轉到購物車界面時,再次聯網獲取新的數據顯示就好。
⑧ android購物車製作求助
你先要把這個界面布局給弄好,圖片、文字、價格等都是從伺服器獲取的,然後用baseadapter適配器填充到listview中,最後進行相應的控制項的事件處理就好了。
⑨ android開發 類似京東商城的購物車角標怎麼實現的
可以採用Cookie存儲最新加入的產品,這樣還可以達到關閉瀏覽器之後在次打開此頁面也不會丟失最新加入產品的效果。