購物車實(shí)現(xiàn)

自定義二級列表

public class MyExpandableListView extends ExpandableListView{

public MyExpandableListView(Context context) {

super(context);

}

public MyExpandableListView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MyExpandableListView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

// TODO Auto-generated method stub

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,

MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

}


二級列表適配器

public class Adapter_Cart extends BaseExpandableListAdapter {

private Context context;

private CartBean cartBean;

private sendFlag sendFlag;

public Adapter_Cart(Context context, CartBean cartBean, Adapter_Cart.sendFlag sendFlag) {

this.context = context;

this.cartBean = cartBean;

this.sendFlag = sendFlag;

}

@Override

public int getGroupCount() {

return cartBean.getData().size();

}

@Override

public int getChildrenCount(int groupPosition) {

return cartBean.getData().get(groupPosition).getList().size();

}

@Override

public Object getGroup(int groupPosition) {

return cartBean.getData().get(groupPosition);

}

@Override

public Object getChild(int groupPosition, int childPosition) {

return cartBean.getData().get(groupPosition).getList().get(childPosition);

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

@Override

public long getChildId(int groupPosition, int childPosition) {

return childPosition;

}

@Override

public boolean hasStableIds() {

return true;

}

@Override

public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {

final GroupHolder holder;

if (convertView == null) {

//獲取組布局

convertView = View.inflate(context, R.layout.group_item, null);

//實(shí)例GroupHolder

holder = new GroupHolder();

//獲取控件

holder.groupCheck = (CheckBox) convertView.findViewById(R.id.group_check);

holder.groupName = (TextView) convertView.findViewById(R.id.group_name);

convertView.setTag(holder);

} else {

holder = (GroupHolder) convertView.getTag();

}

//賦值

holder.groupName.setText(cartBean.getData().get(groupPosition).getSellerName());

holder.groupCheck.setChecked(cartBean.getData().get(groupPosition).isSischecked());

//全選點(diǎn)擊事件

holder.groupCheck.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//得到狀態(tài)

boolean checked = holder.groupCheck.isChecked();

//賦值

cartBean.getData().get(groupPosition).setSischecked(checked);

//店鋪是否選擇 此店鋪所有商品也跟著是否選擇

for (int i = 0; i < cartBean.getData().get(groupPosition).getList().size(); i++) {

cartBean.getData().get(groupPosition).getList().get(i).setIschecked(checked);

}

//刷新適配器

notifyDataSetChanged();

//總價格 總數(shù)量 是否全選

double t = 0;

int count = 0;

boolean flag = true;

for (int i = 0; i < cartBean.getData().size(); i++) {

for (int j = 0; j < cartBean.getData().get(i).getList().size(); j++) {

if (cartBean.getData().get(i).getList().get(j).ischecked()){

t+=cartBean.getData().get(i).getList().get(j).getPrice()*cartBean.getData().get(i).getList().get(j).getNum();

count+=cartBean.getData().get(i).getList().get(j).getNum();

}

}

if (!cartBean.getData().get(i).isSischecked()){

flag = false;

}

}

//接口傳值

sendFlag.sendFlags(flag);

sendFlag.sendTotalAndCounts(t,count);

}

});

return convertView;

}

@Override

public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

final ChildHolder holder;

if (convertView == null) {

//獲取組布局

convertView = View.inflate(context, R.layout.child_item, null);

//實(shí)例GroupHolder

holder = new ChildHolder();

//獲取控件

holder.childCheck = (CheckBox) convertView.findViewById(R.id.child_check);

holder.childTitle = (TextView) convertView.findViewById(R.id.child_title);

holder.childPrice = (TextView) convertView.findViewById(R.id.child_price);

holder.childSubhead = (TextView) convertView.findViewById(R.id.child_subhead);

holder.childPic = (ImageView) convertView.findViewById(R.id.child_pic);

holder.addsub = (NumberAddSubView) convertView.findViewById(R.id.addsub);

convertView.setTag(holder);

} else {

holder = (ChildHolder) convertView.getTag();

}

holder.addsub.setMaxValue(Integer.MAX_VALUE);

String[] strings = cartBean.getData().get(groupPosition).getList().get(childPosition).getImages().split("\\|");

Glide.with(context).load(strings[0]).into(holder.childPic);

holder.childCheck.setChecked(cartBean.getData().get(groupPosition).getList().get(childPosition).ischecked());

holder.childTitle.setText(cartBean.getData().get(groupPosition).getList().get(childPosition).getTitle());

holder.childSubhead.setText(cartBean.getData().get(groupPosition).getList().get(childPosition).getSubhead());

holder.childPrice.setText(cartBean.getData().get(groupPosition).getList().get(childPosition).getPrice()+"");

holder.addsub.setValue(cartBean.getData().get(groupPosition).getList().get(childPosition).getNum());

//復(fù)選框點(diǎn)擊監(jiān)聽

holder.childCheck.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

boolean checked = holder.childCheck.isChecked();

//賦值

cartBean.getData().get(groupPosition).getList().get(childPosition).setIschecked(checked);

//確定店鋪狀態(tài)

boolean s_flag = true;

for (int i = 0; i < cartBean.getData().get(groupPosition).getList().size(); i++) {

if (!cartBean.getData().get(groupPosition).getList().get(i).ischecked()){

s_flag = false;

}

}

cartBean.getData().get(groupPosition).setSischecked(s_flag);

//刷新適配器

notifyDataSetChanged();

//總價格 總數(shù)量 是否全選

double t = 0;

int count = 0;

boolean flag = true;

for (int i = 0; i < cartBean.getData().size(); i++) {

for (int j = 0; j < cartBean.getData().get(i).getList().size(); j++) {

if (cartBean.getData().get(i).getList().get(j).ischecked()){

t+=cartBean.getData().get(i).getList().get(j).getPrice()*cartBean.getData().get(i).getList().get(j).getNum();

count+=cartBean.getData().get(i).getList().get(j).getNum();

}

}

if (!cartBean.getData().get(i).isSischecked()){

flag = false;

}

}

//接口傳值

sendFlag.sendFlags(flag);

sendFlag.sendTotalAndCounts(t,count);

}

});

return convertView;

}

@Override

public boolean isChildSelectable(int groupPosition, int childPosition) {

return true;

}

class GroupHolder {

private CheckBox groupCheck;

private TextView groupName;

}

class ChildHolder {

private CheckBox childCheck;

private TextView childTitle;

private TextView childSubhead;

private TextView childPrice;

private ImageView childPic;

private NumberAddSubView addsub;

}

public interface sendFlag {

void sendFlags(boolean flag);

void sendTotalAndCounts(double t, int count);

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狐肢,隨后出現(xiàn)的幾起案子端辱,更是在濱河造成了極大的恐慌,老刑警劉巖怯晕,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缸棵,居然都是意外死亡舟茶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門堵第,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吧凉,“玉大人,你說我怎么就攤上這事踏志》保” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵针余,是天一觀的道長饲鄙。 經(jīng)常有香客問我,道長圆雁,這世上最難降的妖魔是什么忍级? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮摸柄,結(jié)果婚禮上颤练,老公的妹妹穿的比我還像新娘。我一直安慰自己驱负,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布患雇。 她就那樣靜靜地躺著跃脊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苛吱。 梳的紋絲不亂的頭發(fā)上酪术,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音翠储,去河邊找鬼绘雁。 笑死,一個胖子當(dāng)著我的面吹牛援所,可吹牛的內(nèi)容都是我干的庐舟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼住拭,長吁一口氣:“原來是場噩夢啊……” “哼挪略!你這毒婦竟也來了历帚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杠娱,失蹤者是張志新(化名)和其女友劉穎挽牢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摊求,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡禽拔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了室叉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睹栖。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖太惠,靈堂內(nèi)的尸體忽然破棺而出磨淌,到底是詐尸還是另有隱情,我是刑警寧澤凿渊,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布梁只,位于F島的核電站,受9級特大地震影響埃脏,放射性物質(zhì)發(fā)生泄漏搪锣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一彩掐、第九天 我趴在偏房一處隱蔽的房頂上張望构舟。 院中可真熱鬧,春花似錦堵幽、人聲如沸狗超。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽努咐。三九已至,卻和暖如春殴胧,著一層夾襖步出監(jiān)牢的瞬間渗稍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工团滥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竿屹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓灸姊,卻偏偏與公主長得像拱燃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厨钻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 邏輯很簡單扼雏,捋順就好了~~~~~~~~ //全選方法 public void selsetAll(final Li...
    天天大保建閱讀 394評論 0 1
  • [java優(yōu)先隊列PriorityQueue的使用] PriorityQueue彈出優(yōu)先級最高的元素坚嗜,優(yōu)先級的比較...
    codercjg閱讀 383評論 0 0
  • 一、雞湯 appwidget是android中小組件诗充,我們經(jīng)常說的widget其實(shí)是指的那些button苍蔬、text...
    歡樂斗佛閱讀 2,255評論 1 8
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,419評論 0 17
  • 獨(dú)自駕著小船蝴蜓, 駛出二十歲的港灣碟绑。 在風(fēng)雨的洗禮中, 把未知的天地開拓茎匠! 不要再彷徨 更不會退縮格仲! 用腳步丈量出理...
    獨(dú)依夜闌風(fēng)閱讀 258評論 0 0