新聞中心
Android 自定義仿京東地址選擇器
public class AddressPickerViewextends RelativeLayout{
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:咖啡廳設(shè)計等網(wǎng)站設(shè)計、全網(wǎng)整合營銷推廣解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。
// 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 的數(shù)量
private TabLayoutmTabLayout; // tabLayout
private RecyclerViewmRvList; // 顯示數(shù)據(jù)的RecyclerView
private StringdefaultProvince ="省份"; //顯示在上面tab中的省份
private StringdefaultCity ="城市"; //顯示在上面tab中的城市
private StringdefaultDistrict ="區(qū)縣"; //顯示在上面tab中的區(qū)縣
private ListmRvData; // 用來在recyclerview顯示的數(shù)據(jù)
private AddressAdaptermAdapter;? // recyclerview 的adapter
private YwpAddressBeanmYwpAddressBean; // 總數(shù)據(jù)
private YwpAddressBean.AddressItemBeanmSelectProvice; //選中 省份bean
private YwpAddressBean.AddressItemBeanmSelectCity;//選中 城市bean
private YwpAddressBean.AddressItemBeanmSelectDistrict;//選中 區(qū)縣bean
private int mSelectProvicePosition =0; //選中 省份 位置
private int mSelectCityPosition =0;//選中 城市? 位置
private int mSelectDistrictPosition =0;//選中 區(qū)縣? 位置
private OnAddressPickerSureListenermOnAddressPickerSureListener;
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);
? ? // 初始化默認(rèn)的本地數(shù)據(jù)? 也提供了方法接收外面數(shù)據(jù)
? ? mRvList.post(new Runnable() {
@Override
? ? ? ? public void run() {
initData();
? ? ? ? }
});
}
/**
* 初始化數(shù)據(jù)
* 拿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();
? ? }
// 將數(shù)據(jù)轉(zhuǎn)換為對象
? ? mYwpAddressBean =new Gson().fromJson(jsonSB.toString(), YwpAddressBean.class);
? ? if (mYwpAddressBean !=null) {
mRvData.clear();
? ? ? ? mRvData.addAll(mYwpAddressBean.getProvince());
? ? ? ? mAdapter.notifyDataSetChanged();
? ? }
}
/**
* 開放給外部傳入數(shù)據(jù)
* 暫時就用這個Bean模型,如果數(shù)據(jù)不一致就需要各自根據(jù)數(shù)據(jù)來生成這個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) {
//? 回調(diào)接口
? ? ? ? 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.OnTabSelectedListenertabSelectedListener =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:
// 點到區(qū)的時候要判斷有沒有選擇省份與城市
? ? ? ? ? ? ? ? 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) {
}
};
/**
* 下面顯示數(shù)據(jù)的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);
? ? ? ? // 設(shè)置選中效果的顏色
? ? ? ? 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;
? ? ? ? }
// 設(shè)置點擊之后的事件
? ? ? ? holder.mTitle.setOnClickListener(new OnClickListener() {
@Override
? ? ? ? ? ? public void onClick(View v) {
// 點擊 分類別
? ? ? ? ? ? ? ? switch (tabSelectPosition) {
case 0:
mSelectProvice =mRvData.get(position);
? ? ? ? ? ? ? ? ? ? ? ? // 清空后面兩個的數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? mSelectCity =null;
? ? ? ? ? ? ? ? ? ? ? ? mSelectDistrict =null;
? ? ? ? ? ? ? ? ? ? ? ? mSelectCityPosition =0;
? ? ? ? ? ? ? ? ? ? ? ? mSelectDistrictPosition =0;
? ? ? ? ? ? ? ? ? ? ? ? mTabLayout.getTabAt(1).setText(defaultCity);
? ? ? ? ? ? ? ? ? ? ? ? mTabLayout.getTabAt(2).setText(defaultDistrict);
? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置這個對應(yīng)的標(biāo)題
? ? ? ? ? ? ? ? ? ? ? ? mTabLayout.getTabAt(0).setText(mSelectProvice.getN());
? ? ? ? ? ? ? ? ? ? ? ? // 跳到下一個選擇
? ? ? ? ? ? ? ? ? ? ? ? mTabLayout.getTabAt(1).select();
? ? ? ? ? ? ? ? ? ? ? ? mSelectProvicePosition =position;
break;
? ? ? ? ? ? ? ? ? ? case 1:
mSelectCity =mRvData.get(position);
? ? ? ? ? ? ? ? ? ? ? ? // 清空后面一個的數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? mSelectDistrict =null;
? ? ? ? ? ? ? ? ? ? ? ? mSelectDistrictPosition =0;
? ? ? ? ? ? ? ? ? ? ? ? mTabLayout.getTabAt(2).setText(defaultDistrict);
? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置這個對應(yīng)的標(biāo)題
? ? ? ? ? ? ? ? ? ? ? ? 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);
? ? ? ? }
}
}
/**
* 點確定回調(diào)這個接口
*/
public interface OnAddressPickerSureListener {
void onSureClick(String proviceName,String cityName,String earaName);
}
public void setOnAddressPickerSure(OnAddressPickerSureListener listener) {
this.mOnAddressPickerSureListener = listener;
}
京東擼貨安卓機(jī)怎么改ip
京東換ip的方法步驟如下:
1、打開京東選擇產(chǎn)品和需要的型號然后點擊購買。
2、點擊上方的地址然后選擇好收貨地址。
3、如果需要添加地址則點下方新建地址即可。
備注:如果已經(jīng)下單或者已經(jīng)處于發(fā)貨狀態(tài),則需要用戶和商家進(jìn)行溝通,看看是否可以直接修改地址,或者選擇退單重新購買,這個無法自己來進(jìn)行修改的,下單之后就是商家進(jìn)行處理了。
android 網(wǎng)頁可以打開京東app商品頁嗎
android 網(wǎng)頁是可以直接打開京東的app商品頁的,只不過頁面不好瀏覽建議還是下載app或者直接在微信里面打開購物,默認(rèn)的就是京東
安卓用微信登陸京東為什么到蘋果登陸京東要用之前的手機(jī)號碼
因為京東登錄需要手機(jī)號驗證。
更換手機(jī)號京東登錄解決方式:
1.打開網(wǎng)頁進(jìn)入京東,點擊客戶服務(wù)選擇在線客服。
2.然后會進(jìn)入在線客服網(wǎng)頁。
3.在頁面中點擊賬戶服務(wù)。
4.接下來就會談彈出于京東的客服溝通的框框。
5.你只要告訴他你要解綁手機(jī)號碼就行,然后等待回復(fù)。
6.解綁手機(jī)號碼需要賬戶歷史第一筆完成的訂單號(包括該訂單的收貨人姓名,地址和電話)以及之前綁定的手機(jī)號。發(fā)過去就行。7.然后等電話就行,保持電話通暢。一般都是在下午打電話的。
為什么蘋果登錄的京東和安卓的同步不了
因為京東只有一個賬號,不能在多臺設(shè)備同時登陸。
京東(股票代碼:JD),中國自營式電商企業(yè),創(chuàng)始人劉強(qiáng)東擔(dān)任京東集團(tuán)董事局主席兼首席執(zhí)行官。旗下設(shè)有京東商城、京東金融、拍拍網(wǎng)、京東智能、O2O及海外事業(yè)部等。2013年正式獲得虛擬運營商牌照。2014年5月在美國納斯達(dá)克證券交易所正式掛牌上市。2015年7月,京東入選納斯達(dá)克100指數(shù)和納斯達(dá)克100平均加權(quán)指數(shù)。2016年6月與沃爾瑪達(dá)成深度戰(zhàn)略合作,1號店并入京東。2017年1月4日,中國銀聯(lián)宣布京東金融旗下支付公司正式成為銀聯(lián)收單成員機(jī)構(gòu)。2017年4月25日,京東集團(tuán)宣布正式組建京東物流子集團(tuán)。2017年8月3日,2017年“中國互聯(lián)網(wǎng)企業(yè)100強(qiáng)”榜單發(fā)布,京東排名第四位。2019年7月,發(fā)布2019《財富》世界500強(qiáng):位列139位。2021年《財富》世界500強(qiáng)排名第59位。
安卓手機(jī)在京東怎么用京東閃付?
開通京東閃付后需要將京東閃付賬號設(shè)置為默認(rèn)應(yīng)用。需要在設(shè)備系統(tǒng)中將京東閃付賬號設(shè)置為優(yōu)先支付方式方可進(jìn)行交易。安卓手機(jī)要在系統(tǒng)NFC設(shè)置中去操作設(shè)置。安卓手機(jī)只能在線下商鋪收銀柜臺有銀聯(lián)云閃付標(biāo)識的POS機(jī)使用“京東閃付“進(jìn)行消費。點亮手機(jī)屏幕,貼近商家的pos機(jī)即可進(jìn)行消費扣款(部分商家需要在POS機(jī)輸入京東6位支付密碼)。只有使用Apple
Pay使用京東閃付才能在線上進(jìn)行支付。
安卓系統(tǒng):設(shè)置京東閃付為默認(rèn)扣款應(yīng)用
打開在系統(tǒng)設(shè)置-NFC設(shè)置,將默認(rèn)錢包選擇成HCE默認(rèn)錢包;
點擊觸碰付款設(shè)置,在這里可以查看到京東閃付入口,設(shè)置京東閃付為優(yōu)先支付方式;
文章標(biāo)題:android京東,android京東購物車加載框
鏈接分享:http://fisionsoft.com.cn/article/hoipps.html