欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Listvie簡單實現(xiàn)購物車功能

 更新時間:2019年08月21日 09:14:53   作者:茫茫碌碌  
這篇文章主要為大家詳細(xì)介紹了Listvie簡單實現(xiàn)購物車功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Listvie簡單實現(xiàn)購物車的具體代碼,供大家參考,具體內(nèi)容如下

1.自定義view實現(xiàn)加減

public class MyView extends LinearLayout implements View.OnClickListener {
 
  private OnAmountChangeListener mListener;
  private int count;
  private TextView numText;
 
  public MyView(Context context) {
    this(context,null);
  }
 
  public MyView(Context context, @Nullable AttributeSet attrs) {
    this(context, attrs,0);
  }
 
  public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
 
    View view = View.inflate(context, R.layout.add, this);
    initView(view);
 
 
  }
  public void setText(int num){
    numText.setText(""+num);
  }
  public int getText(){
    getTextString();
    return count;
  }
 
  private void initView(View view) {
 
    Button addBtn = view.findViewById(R.id.btn_add);
    Button jianBtn = view.findViewById(R.id.btn_jian);
    numText = view.findViewById(R.id.txt_num);
    getTextString();
    addBtn.setOnClickListener(this);
    jianBtn.setOnClickListener(this);
  }
 
  public void setOnclickNum(OnAmountChangeListener mListener){
    this.mListener = mListener;
  }
  @Override
  public void onClick(View view) {
    getTextString();
    switch (view.getId()){
      case R.id.btn_add:
        count++;
        break;
      case R.id.btn_jian:
        if(count>0){
          count--;
        }
        break;
    }
    numText.setText(""+count);
    if(mListener!=null) {
      mListener.onAmountChange(view, count);
    }
  }
 
  public void getTextString() {
    String numStr = numText.getText().toString().trim();
    count = Integer.parseInt(numStr);
  }
  public interface OnAmountChangeListener {
    void onAmountChange(View view, int amount);
  }
}

2.適配器接口回調(diào)

public class MyAdapter extends BaseAdapter {
  private List<Text> mList;
  private Context context ;
  private GaroupClick garoupClick;
  private int index;
  private CountClick countClick;
 
  public MyAdapter(Context context) {
    this.context = context;
  }
 
  @Override
  public int getCount() {
    return mList.size();
  }
  public void setData(List<Text> mList){
    this.mList = mList;
    notifyDataSetChanged();
  }
  @Override
  public Object getItem(int i) {
    return mList.get(i);
  }
 
  @Override
  public long getItemId(int i) {
    return i;
  }
 
  public void setOnCountClick(CountClick click){
    this.countClick = click;
  }
  public void setOnGroupclick(GaroupClick groupclick){
    this.garoupClick = groupclick;
  }
  @Override
  public View getView(final int i, View view, ViewGroup viewGroup) {
    final ViewHolder holder ;
    if(view==null){
      holder = new ViewHolder();
      view = View.inflate(context, R.layout.item, null);
      holder.childCheck = view.findViewById(R.id.cb_chid_checked);
      holder.txtPrice = view.findViewById(R.id.txt_price);
      holder.myView = view.findViewById(R.id.myview);
      view.setTag(holder);
    }else{
      holder = (ViewHolder)view.getTag();
    }
    final Text text = mList. get(i);
 
    holder.childCheck.setChecked(text.isChoose());
    holder.txtPrice.setText(""+text.getPrice());
    holder.myView.setText(text.getCount());
    holder.myView.setOnclickNum(new MyView.OnAmountChangeListener() {
      @Override
      public void onAmountChange(View view, int amount) {
        text.setCount(amount);
      }
    });
    boolean checked = holder.childCheck.isChecked();
    if(checked){
      holder.myView.setOnclickNum(new MyView.OnAmountChangeListener() {
        @Override
        public void onAmountChange(View view, int amount) {
          if(countClick!=null){
            countClick.onNumClick(i,amount);
          }
        }
      });
    }
 
    holder.childCheck.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        text.setChoose(((CheckBox)view).isChecked());
 
        if(garoupClick!=null){
          garoupClick.onItemClick(i,((CheckBox)view).isChecked());
        }
 
 
      }
    });
    return view;
  }
  class ViewHolder{
    CheckBox childCheck;
    TextView txtPrice;
    MyView myView;
  }
  public interface GaroupClick{
    void onItemClick(int position, boolean isChoose);
  }
  public interface CountClick{
    void onNumClick(int position, int count);
  }
 
 
}

3.調(diào)用

public class MainActivity extends AppCompatActivity implements MyAdapter.GaroupClick, MyAdapter.CountClick {
 
  private Button jiesuanBtn;
  private ListView mListView;
  private CheckBox allCheck;
  private TextView priceText;
  private List<Text> mList = new ArrayList<>();
  private int numPrice = 0;
  private int count = 0;
  private MyAdapter adapter;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initData();
 
 
  }
 
  private void initData() {
    for (int i = 0; i < 30; i++) {
      Text txt = new Text();
      txt.setPrice(20);
      txt.setCount(1);
      mList.add(txt);
    }
 
    adapter = new MyAdapter(this);
    adapter.setData(mList);
    mListView.setAdapter(adapter);
    adapter.setOnGroupclick(this);
    adapter.setOnCountClick(this);
  }
 
  public boolean isAllChecked(){
    for (Text text : mList) {
      if(!text.isChoose()){//遍歷集合,有一個不選return false
        return false;
      }
    }
    return true;
  }
  private void initView() {
    jiesuanBtn = (Button) findViewById(R.id.btn_num);
    mListView = (ListView) findViewById(R.id.listview);
    allCheck = (CheckBox) findViewById(R.id.cb_all_checked);
    priceText = (TextView) findViewById(R.id.txt_price_sum);
    allCheck.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        if(mList.size()!=0) {
          if(allCheck.isChecked()) {
            for (int i = 0; i < mList.size(); i++) {
              mList.get(i).setChoose(true);
              adapter.notifyDataSetChanged();
            }
          }else{
            for (int i = 0; i < mList.size(); i++) {
              mList.get(i).setChoose(false);
              adapter.notifyDataSetChanged();
            }
          }
          upDate();
        }
      }
 
    });
 
    jiesuanBtn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, PayDemoActivity.class);
        startActivity(intent);
      }
    });
  }
 
  private void upDate() {
    numPrice = 0;
    count = 0;
    for (int i = 0; i < mList.size(); i++) {
      Text text = mList.get(i);
      if(text.isChoose()){
        count++;
        numPrice += text.getPrice()*text.getCount();
      }
    }
    jiesuanBtn.setText("結(jié)算("+count+")");
    priceText.setText("合計:"+numPrice);
  }
 
 
  @Override
  public void onItemClick(int position, boolean isChoose) {
    mList.get(position).setChoose(isChoose);
    if(isAllChecked()){
      allCheck.setChecked(true);
    }else{
      allCheck.setChecked(false);
    }
    adapter.notifyDataSetChanged();
    upDate();
  }
 
  @Override
  public void onNumClick(int position, int count) {
    mList.get(position).setCount(count);
    adapter.notifyDataSetChanged();
    upDate();
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android Build類的詳解及簡單實例

    Android Build類的詳解及簡單實例

    這篇文章主要介紹了Android Build類的詳解及簡單實例的相關(guān)資料,希望通過本文大家能夠理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Android 消息機(jī)制問題總結(jié)

    Android 消息機(jī)制問題總結(jié)

    本文主要介紹Android 消息機(jī)制,這里整理了消息機(jī)制的詳細(xì)資料,和經(jīng)常出現(xiàn)的問題,希望能幫助大家對消息機(jī)制的理解
    2016-08-08
  • Android實現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法

    Android實現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法

    這篇文章主要介紹了Android實現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法,結(jié)合實例形式分析了Android遠(yuǎn)程播放音頻文件的相關(guān)步驟與實現(xiàn)技巧,需要的朋友可以參考下
    2016-08-08
  • android實現(xiàn)自動發(fā)送郵件

    android實現(xiàn)自動發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了android實現(xiàn)自動發(fā)送郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android開發(fā)入門之Service用法分析

    Android開發(fā)入門之Service用法分析

    這篇文章主要介紹了Android中Service用法,較為詳細(xì)的分析了Service的功能、相關(guān)函數(shù)使用及注意事項,需要的朋友可以參考下
    2016-07-07
  • Android頁面之間進(jìn)行數(shù)據(jù)回傳的方法分析

    Android頁面之間進(jìn)行數(shù)據(jù)回傳的方法分析

    這篇文章主要介紹了Android頁面之間進(jìn)行數(shù)據(jù)回傳的方法,結(jié)合實例形式分析了Android頁面之間進(jìn)行數(shù)據(jù)的傳遞與處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 一分鐘實現(xiàn)Android遮罩引導(dǎo)視圖

    一分鐘實現(xiàn)Android遮罩引導(dǎo)視圖

    本文通過一分鐘的時間教大家實現(xiàn)Android遮罩引導(dǎo)視圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Input系統(tǒng)按鍵事件的分發(fā)處理示例詳解

    Input系統(tǒng)按鍵事件的分發(fā)處理示例詳解

    這篇文章主要為大家介紹了Input系統(tǒng)按鍵事件的分發(fā)處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • ASM的tree?api對匿名線程的hook操作詳解

    ASM的tree?api對匿名線程的hook操作詳解

    這篇文章主要為大家介紹了ASM的tree?api對匿名線程的hook操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Android數(shù)據(jù)持久化之I/O操作詳解

    Android數(shù)據(jù)持久化之I/O操作詳解

    這篇文章主要介紹了Android數(shù)據(jù)持久化之I/O操作,結(jié)合實例形式較為詳細(xì)的分析了Android I/O操作的相關(guān)原理與具體的持久化實現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05

最新評論