Android--recycleview子item中checkbox+edittext遇到的問題

1、由於recycleview複用機制,checkbox選一個,下面自動選中,edittext自動輸入問題:

@Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {
        //禁止複用,要不數據重複
        viewHolder.setIsRecyclable(false);
        viewHolder.ckPeoplewater.setText(chargeList.get(position).getItem_Name());
        viewHolder.tvPeopleprice.setText(chargeList.get(position).getItem_Price()+"");
        viewHolder.tvPeopleprice1.setText(chargeList.get(position).getSewageFee()+"");
        viewHolder.tvPeopleprice2.setText(chargeList.get(position).getResourceFee()+"");
        viewHolder.etPeoplewater.setText(chargeList.get(position).getItemHighLimit()+"");
        viewHolder.etPeoplewater1.setText(chargeList.get(position).getItemLowLimit()+"");
        chargeList.get(position).setItemHighLimit(Integer.parseInt(viewHolder.etPeoplewater.getText().toString()));

        viewHolder.ckPeoplewater.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked == true) {
                    map.put(position, true);

                    TextWatcher watcher = new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2){

                        }
                        @Override
                        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                        }
                        @Override
                        public void afterTextChanged(Editable editable) {
                            if (!TextUtils.isEmpty(editable.toString())){
                                chargeList.get(position).setItemHighLimit(Integer.parseInt(editable.toString()));
                            }
                            if(editable != null){
                                mOnItemClickListener.onEtRateClick(position,editable.toString());
                            }
                        }
                    };
                    viewHolder.etPeoplewater.addTextChangedListener(watcher);

                    TextWatcher watcher1 = new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2){

                        }
                        @Override
                        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                        }
                        @Override
                        public void afterTextChanged(Editable editable) {
                            if (!TextUtils.isEmpty(editable.toString())){
                                chargeList.get(position).setItemLowLimit(Integer.parseInt(editable.toString()));
                            }
                            if(editable != null){
                                mOnItemClickListener.onEtTotalClick(position,editable.toString());
                            }
                        }
                    };
                    viewHolder.etPeoplewater1.addTextChangedListener(watcher1);

                } else {
                    map.remove(position);
                }

                if (mOnItemClickListener!=null){
                    mOnItemClickListener.onItemClick(position,chargeList,isChecked);
                }
            }
        });
        if (map != null && map.containsKey(position)) {
            viewHolder.ckPeoplewater.setChecked(true);
        } else {
            viewHolder.ckPeoplewater.setChecked(false);
        }


    }

我這個數據少,可以禁用,數據多的回卡頓,通過設置settag來實現,百度有好多;

對edittext監聽,獲取數據:

public class chargeAdapter extends RecyclerView.Adapter<chargeAdapter.ViewHolder> {

    private Context mContext;
    List<watercharge .ItemsInfoBean> chargeList;
    private OnItemClickListener mOnItemClickListener;
    private Map<Integer, Boolean> map = new HashMap<>();

    public chargeAdapter(Context context,List<watercharge .ItemsInfoBean> chargeList) {
        this.mContext = context;
        this.chargeList = chargeList;
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.item_charge, viewGroup, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {
        //禁止複用,要不數據重複
        viewHolder.setIsRecyclable(false);
        viewHolder.ckPeoplewater.setText(chargeList.get(position).getItem_Name());
        viewHolder.tvPeopleprice.setText(chargeList.get(position).getItem_Price()+"");
        viewHolder.tvPeopleprice1.setText(chargeList.get(position).getSewageFee()+"");
        viewHolder.tvPeopleprice2.setText(chargeList.get(position).getResourceFee()+"");
        viewHolder.etPeoplewater.setText(chargeList.get(position).getItemHighLimit()+"");
        viewHolder.etPeoplewater1.setText(chargeList.get(position).getItemLowLimit()+"");
        chargeList.get(position).setItemHighLimit(Integer.parseInt(viewHolder.etPeoplewater.getText().toString()));

        viewHolder.ckPeoplewater.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked == true) {
                    map.put(position, true);

                    TextWatcher watcher = new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2){

                        }
                        @Override
                        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                        }
                        @Override
                        public void afterTextChanged(Editable editable) {
                            if (!TextUtils.isEmpty(editable.toString())){
                                chargeList.get(position).setItemHighLimit(Integer.parseInt(editable.toString()));
                            }
                            if(editable != null){
                                mOnItemClickListener.onEtRateClick(position,editable.toString());
                            }
                        }
                    };
                    viewHolder.etPeoplewater.addTextChangedListener(watcher);

                    TextWatcher watcher1 = new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2){

                        }
                        @Override
                        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                        }
                        @Override
                        public void afterTextChanged(Editable editable) {
                            if (!TextUtils.isEmpty(editable.toString())){
                                chargeList.get(position).setItemLowLimit(Integer.parseInt(editable.toString()));
                            }
                            if(editable != null){
                                mOnItemClickListener.onEtTotalClick(position,editable.toString());
                            }
                        }
                    };
                    viewHolder.etPeoplewater1.addTextChangedListener(watcher1);

                } else {
                    map.remove(position);
                }

                if (mOnItemClickListener!=null){
                    mOnItemClickListener.onItemClick(position,chargeList,isChecked);
                }
            }
        });
        if (map != null && map.containsKey(position)) {
            viewHolder.ckPeoplewater.setChecked(true);
        } else {
            viewHolder.ckPeoplewater.setChecked(false);
        }


    }

    @Override
    public int getItemCount() {
        return chargeList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder{
        @BindView(R.id.ck_peoplewater)
        CheckBox ckPeoplewater;
        @BindView(R.id.tv_peopleprice)
        TextView tvPeopleprice;
        @BindView(R.id.tv_peopleprice1)
        TextView tvPeopleprice1;
        @BindView(R.id.tv_peopleprice2)
        TextView tvPeopleprice2;
        @BindView(R.id.et_peoplewater)
        EditText etPeoplewater;
        @BindView(R.id.et_peoplewater1)
        EditText etPeoplewater1;

        ViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);

            //將監聽傳遞給自定義接口
//            ckPeoplewater.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
//                @Override
//                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//                    if (mOnItemClickListener!=null){
//                        mOnItemClickListener.onItemClick(getAdapterPosition(),chargeList,isChecked);
//                    }
//                }
//            });
//            etPeoplewater.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    if (mOnItemClickListener!=null){
//                        mOnItemClickListener.onEtRateClick(getAdapterPosition());
//                    }
//                }
//            });

//            view.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    if (mOnItemClickListener != null){
//                        mOnItemClickListener.onItemClick();
//                    }
//                }
//            });
        }
    }

    public interface OnItemClickListener {
        void onItemClick(int Position, List<watercharge .ItemsInfoBean> chargeList,boolean isChecked);
        void onEtRateClick(int Position,String text);
        void onEtTotalClick(int Position,String text);
    }
    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        mOnItemClickListener = onItemClickListener;
    }

}
package com.example.water;

import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.nfc.FormatException;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import com.example.water.greendao.DaoMaster;
import com.example.water.greendao.DaoSession;
import com.example.water.greendao.charge1Dao;
import com.example.water.greendao.meterinfo2Dao;
import com.example.water.greendao.meterinfo3Dao;
import com.google.gson.Gson;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;

import org.greenrobot.greendao.query.Query;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import adapter.chargeAdapter;
import bean.charge;
import bean.watercharge;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import db.charge1;
import db.meterinfo2;
import db.meterinfo3;
import db.rate;
import utils.AppContext;
import utils.DES;

/**
 * Created by Administrator on 2019/4/28
 * <p>
 * desc:繳費類型
 */
public class chargeActivity extends Activity {

    private final static String TAG = chargeActivity.class.getName();
    private chargeAdapter mChargeAdapter;
    List<watercharge .ItemsInfoBean> chargeList = new ArrayList<>();
    private DaoSession daoSession;
    int n1 = 0;
    int n2 = 0;
    int mt_kind = 0;
    String Item_ID = "";
    String mt_id = "";
    double ItemPrice = 0;
    double SewageFee = 0;
    double ResourceFee = 0;
    String metertype = "";
    String authorizationCode = "";
    String Item_Name = "";
    int Cost_Percent = 0;
    int Cost_Quantity = 0;
    List<charge> chargesList = new ArrayList<>();
    Map<String, Integer> mDeviceHeaderMap = new HashMap<>();
    Map<String, Integer> mDeviceHeaderMap1 = new HashMap<>();
    boolean flag = true;
    int positionflag = 0;

    @BindView(R.id.iv_return)
    ImageView ivReturn;
    @BindView(R.id.rv_charge)
    RecyclerView rvCharge;
    @BindView(R.id.bt_commit)
    Button btCommit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_charge);
        ButterKnife.bind(this);

        setupDatabase();
        initCharge();
        initView();
    }

    private void initView() {
        metertype = getIntent().getStringExtra("metertype");
//        Toast.makeText(this,"您選擇水錶類型:" + metertype,Toast.LENGTH_SHORT).show();
//        l.clear();
//        l1.clear();
//        OnItemEnterOrExitVisibleHelper helper = new OnItemEnterOrExitVisibleHelper();
//        helper.setRecyclerScrollListener(rvCharge);
//        helper.setOnScrollStatusListener(new OnItemEnterOrExitVisibleHelper.OnScrollStatusListener() {
//            @Override
//            public void onSelectEnterPosition(int postion) {
//                if (l.size() > 0){
//                    l.clear();
//                    l1.add(postion);
//                    changeNum1 = l1.size();
//                }
//
//            }
//
//            @Override
//            public void onSelectExitPosition(int postion) {
//                Log.i("dddd", "退出Exit:" + postion);
//                l1.clear();
//                l.add(postion);
//                changeNum2 = l.size();
//            }
//        });

    }


    @OnClick({R.id.iv_return, R.id.bt_commit})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.iv_return:
                startActivity(new Intent(chargeActivity.this, accountActivity.class));
                finish();
                break;
            case R.id.bt_commit:
//                for (int i = 0;i < chargesList.size();i++){
//                    n1 = n1 + Integer.parseInt(chargesList.get(i).getRate());
//                    n2 = n2 + Integer.parseInt(chargesList.get(i).getTotal());
//
//                    Query query2 = daoSession.getMeterinfo2Dao().queryBuilder()
//                            .where(meterinfo2Dao.Properties.MeterName.eq(metertype))
//                            .orderAsc(meterinfo2Dao.Properties.MeterCode).build();
//                    List<meterinfo2> m1 = query2.list();
//                    for (int j = 0;j < m1.size();j++){
//                        mt_kind = m1.get(j).getMeterCode();
//                    }
//
//                    Query query1 = daoSession.getMeterinfo3Dao().queryBuilder()
//                            .where(meterinfo3Dao.Properties.Mt_Kind.eq(mt_kind))
//                            .orderAsc(meterinfo3Dao.Properties.Mt_Id).build();
//                    List<meterinfo3> m = query1.list();
//                    for (int l = 0;l < m.size();l++){
//                        mt_id = m.get(l).getMt_Id();
//                    }
//
//                    Query query = daoSession.getCharge1Dao().queryBuilder()
//                            .where(charge1Dao.Properties.Item_Name.eq(chargesList.get(i).getName()))
//                            .orderAsc(charge1Dao.Properties.Item_ID)
//                            .build();
//                    List<charge1> c = query.list();
//                    for (int k = 0;k < c.size();k++){
//                        Item_ID = String.valueOf(c.get(k).getItem_ID());
//                        ItemPrice = c.get(k).getItem_Price();
//                        SewageFee = c.get(k).getSewageFee();
//                        ResourceFee = c.get(k).getResourceFee();
//                    }
//
//                    JSONObject jsonObject = new JSONObject();
//                    try {
//                        jsonObject.put("Usr_ID","");
//                        jsonObject.put("Item_kind",mt_kind);
//                        jsonObject.put("Item_ID",Item_ID);
//                        jsonObject.put("Cost_Percent",chargesList.get(i).getRate());
//                        jsonObject.put("MeterID",mt_id);
//                        jsonObject.put("Cost_Quantity",chargesList.get(i).getTotal());
//                        jsonObject.put("ItemPrice",ItemPrice);
//                        jsonObject.put("SewageFee",SewageFee);
//                        jsonObject.put("ResourceFee",ResourceFee);
//                        jsonObject.put("Water_Type",chargesList.get(i).getName());
//                        jsonObject.put("UsrMeterType","");
//                        jsonObject.put("IsDeleted",0);
//                        jsonObject.put("Operator","");
//                    } catch (JSONException e) {
//                        e.printStackTrace();
//                    }
//                    array.put(jsonObject);
//                }
//
//                Log.i(TAG,n1+","+n2);
//                if (n1 == 100 && n2 == 100) {
//                    Toast.makeText(this, "用水比例和定量不能同時配置,請重新配置!", Toast.LENGTH_LONG).show();
//                } else {
//                    if (n1 == 100 || n2 == 100) {
//                        Intent intent = new Intent(chargeActivity.this,accountActivity.class);
//
//                        if (n1 == 100){
//                            intent.putExtra("UsrMeterTyp","0");
//                            intent.putExtra("charge",mDeviceHeaderMap.toString());
//                            intent.putExtra("chargeinfo",array.toString());
//                            intent.putExtra("Item_ID",Item_ID);
//                        }else {
//                            intent.putExtra("charge",mDeviceHeaderMap1.toString());
//                            intent.putExtra("UsrMeterTyp","1");
//                            intent.putExtra("chargeinfo",array.toString());
//                            intent.putExtra("Item_ID",Item_ID);
//                        }
//                        setResult(2,intent);
//                        n1 = 0;
//                        n2 = 0;
//                        finish();
//                    }else {
//                        Toast.makeText(this, "用水比例配置不正確,請重新配置!", Toast.LENGTH_LONG).show();
//                        n1 = 0;
//                        n2 = 0;
//                    }
//                }

                if (flag){
                    for (String key : mDeviceHeaderMap.keySet()){
                        n1 = n1 + mDeviceHeaderMap.get(key);
                    }
                }else {
                    for (String key : mDeviceHeaderMap1.keySet()){
                        n2 = n2 + mDeviceHeaderMap1.get(key);
                    }
                }

                JSONArray array = new JSONArray();
                Log.i("dddd456",chargesList.size()+"");
                for (int i = 0;i < chargesList.size();i++){

                    Query query2 = daoSession.getMeterinfo2Dao().queryBuilder()
                            .where(meterinfo2Dao.Properties.MeterName.eq(metertype))
                            .orderAsc(meterinfo2Dao.Properties.MeterCode).build();
                    List<meterinfo2> m1 = query2.list();
                    for (int j = 0;j < m1.size();j++){
                        mt_kind = m1.get(j).getMeterCode();
                    }

                    Query query1 = daoSession.getMeterinfo3Dao().queryBuilder()
                            .where(meterinfo3Dao.Properties.Mt_Kind.eq(mt_kind))
                            .orderAsc(meterinfo3Dao.Properties.Mt_Id).build();
                    List<meterinfo3> m = query1.list();
                    for (int l = 0;l < m.size();l++){
                        mt_id = m.get(l).getMt_Id();
                    }

                    Query query = daoSession.getCharge1Dao().queryBuilder()
                            .where(charge1Dao.Properties.Item_Name.eq(chargesList.get(i).getName()))
                            .orderAsc(charge1Dao.Properties.Item_ID)
                            .build();
                    List<charge1> c = query.list();
                    for (int k = 0;k < c.size();k++){
                        Item_ID = String.valueOf(c.get(k).getItem_ID());
                        ItemPrice = c.get(k).getItem_Price();
                        SewageFee = c.get(k).getSewageFee();
                        ResourceFee = c.get(k).getResourceFee();
                    }

                    JSONObject jsonObject = new JSONObject();
                    try {
                        jsonObject.put("Usr_ID","");
                        jsonObject.put("Item_kind",mt_kind);
                        jsonObject.put("Item_ID",Item_ID);
                        jsonObject.put("Cost_Percent",chargesList.get(i).getRate());
                        jsonObject.put("MeterID",mt_id);
                        jsonObject.put("Cost_Quantity",chargesList.get(i).getTotal());
                        jsonObject.put("ItemPrice",ItemPrice);
                        jsonObject.put("SewageFee",SewageFee);
                        jsonObject.put("ResourceFee",ResourceFee);
                        jsonObject.put("Water_Type",chargesList.get(i).getName());
                        jsonObject.put("UsrMeterType","");
                        jsonObject.put("IsDeleted",0);
                        jsonObject.put("Operator","");
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    array.put(jsonObject);
                }

                Log.i(TAG,n1+","+n2);
                if (n1 == 100 && n2 == 100) {
                    Toast.makeText(this, "用水比例和定量不能同時配置,請重新配置!", Toast.LENGTH_LONG).show();
                } else {
                    if (n1 == 100 || n2 == 100) {
                        Intent intent = new Intent(chargeActivity.this,accountActivity.class);

                        if (n1 == 100){
                            intent.putExtra("UsrMeterTyp","0");
                            intent.putExtra("charge",mDeviceHeaderMap.toString());
                            intent.putExtra("chargeinfo",array.toString());
                            intent.putExtra("Item_ID",Item_ID);
                        }else {
                            intent.putExtra("charge",mDeviceHeaderMap1.toString());
                            intent.putExtra("UsrMeterTyp","1");
                            intent.putExtra("chargeinfo",array.toString());
                            intent.putExtra("Item_ID",Item_ID);
                        }
                        setResult(2,intent);
                        n1 = 0;
                        n2 = 0;
                        finish();
                    }else {
                        Toast.makeText(this, "用水比例配置不正確,請重新配置!", Toast.LENGTH_LONG).show();
                        n1 = 0;
                        n2 = 0;
                    }
                }
                break;
        }
    }

    private void initCharge() {
        String chargeurl = "";
        String url1 = LoginActivity.getJson(chargeActivity.this,"baseUrl");
        try {
            JSONObject jsonObject1 = new JSONObject(url1);
            chargeurl = jsonObject1.getString("chargeurl");
            authorizationCode = jsonObject1.getString("authorizationCode");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        String url = chargeurl+"ElecWater/SystemParameter/ItemsInfoApi.ashx";
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("authorizationCode", authorizationCode);
            jsonObject.put("Item_Kind", 27);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        OkGo.<String>post(url)
                .tag(AppContext.getContext())
                .upJson(jsonObject)
                .execute(new StringCallback() {
                    @Override
                    public void onSuccess(Response<String> response) {
                        String info = response.body().toString();
                        try {
                            JSONObject jsonObject1 = new JSONObject(info);
                            info = jsonObject1.getString("info");
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        String body = info.substring(8, info.length());
                        String key = info.substring(0, 8);
                        try {
                            String result = DES.decrypt(body, key);
                            Log.i(TAG, result);
                            Gson gson = new Gson();
                            watercharge water = gson.fromJson(result, watercharge.class);
                            if (water.isSuccess()) {
                                chargeList = water.getItemsInfo();
                                mChargeAdapter = new chargeAdapter(chargeActivity.this,chargeList);
                                LinearLayoutManager layoutManager = new LinearLayoutManager(chargeActivity.this,
                                        LinearLayoutManager.VERTICAL, false);
                                rvCharge.setLayoutManager(layoutManager);
                                rvCharge.setAdapter(mChargeAdapter);

                                daoSession.getCharge1Dao().deleteAll();
                                for (watercharge.ItemsInfoBean w : chargeList){
                                    charge1 c = new charge1();
                                    c.setItem_ID(w.getItem_ID());
                                    c.setItem_Name(w.getItem_Name());
                                    c.setItem_Price(w.getItem_Price());
                                    c.setSewageFee(w.getSewageFee());
                                    c.setResourceFee(w.getResourceFee());
                                    c.setItem_Name(w.getItem_Name());

                                    daoSession.getCharge1Dao().insert(c);
                                }

                                mChargeAdapter.setOnItemClickListener(new chargeAdapter.OnItemClickListener() {
                                    @Override
                                    public void onItemClick(int Position, List<watercharge.ItemsInfoBean> chargeList,boolean isChecked) {
//                                        changeNum = changeNum2-changeNum1;
                                        if (isChecked == true){
                                            positionflag = Position;
                                            Item_Name = chargeList.get(Position).getItem_Name();
                                            Log.i("dddd44",Item_Name);
//                                            Log.i("dddd1",Position+ "");
//                                            Log.i("dddd2",changeNum1+ "");
//                                            Log.i("dddd2",changeNum2+ "");
//                                            Log.i("dddd2",changeNum+ "");
//                                            Log.i("dddd3",Position - changeNum+"");
//                                            if (l.size() > 0){
//                                                Position = Position - changeNum2;
//                                            }

//                                            RelativeLayout layout = (RelativeLayout) rvCharge.getChildAt(Position);
//                                            CheckBox selectname = layout.findViewById(R.id.ck_peoplewater);
//                                            EditText rate = layout.findViewById(R.id.et_peoplewater);
//                                            EditText num = layout.findViewById(R.id.et_peoplewater1);
//                                            charge c = new charge();
//                                            c.setName(selectname.getText().toString());
//                                            c.setRate(rate.getText().toString());
//                                            c.setTotal(num.getText().toString());
//                                            chargesList.add(c);
//                                            Log.i("dddd",selectname.getText().toString()+Position+rate.getText().toString());
//
//                                            mDeviceHeaderMap.put(selectname.getText().toString(),rate.getText().toString());
//                                            mDeviceHeaderMap1.put(selectname.getText().toString(),num.getText().toString());
                                        }else {
//                                            Query query = daoSession.getCharge1Dao().queryBuilder()
//                                                    .where(charge1Dao.Properties.Item_ID.eq(Position+1))
//                                                    .orderAsc(charge1Dao.Properties.Item_Name)
//                                                    .build();
//                                            List<charge1> c = query.list();
//                                            for (int k = 0;k < c.size();k++){
//                                                Item_Name = c.get(k).getItem_Name();
//                                            }
//                                            Log.i("ddd8",mDeviceHeaderMap.get(Item_Name)+"");

                                            if (flag){
                                                n1 = n1 - mDeviceHeaderMap.get(Item_Name);
                                                mDeviceHeaderMap.remove(Item_Name);
                                            }else {
                                                n2 = n2 - mDeviceHeaderMap1.get(Item_Name);
                                                mDeviceHeaderMap1.remove(Item_Name);
                                            }

                                        }

                                    }

                                    @Override
                                    public void onEtRateClick(int Position,String text) {
                                        if (!TextUtils.isEmpty(text)){
                                            Cost_Percent = Integer.parseInt(text);
//                                            n1 = n1 + Integer.parseInt(text);
//                                            Log.i("ddd3",n1+"");
                                            Log.i("dddd123",Position+"");
//                                            Query query = daoSession.getCharge1Dao().queryBuilder()
//                                                    .where(charge1Dao.Properties.Item_ID.eq(Position+1))
//                                                    .orderAsc(charge1Dao.Properties.Item_Name)
//                                                    .build();
//                                            List<charge1> c = query.list();
//                                            for (int k = 0;k < c.size();k++){
//                                                Item_Name = c.get(k).getItem_Name();
//                                            }
                                            if (Position == positionflag){
                                                charge ch = new charge();
                                                ch.setName(Item_Name);
                                                ch.setRate(Cost_Percent);
                                                chargesList.add(ch);
                                                mDeviceHeaderMap.put(Item_Name,Cost_Percent);
                                                flag = true;
                                                Log.i(TAG,mDeviceHeaderMap.toString());
                                            }

                                        }

                                    }

                                    @Override
                                    public void onEtTotalClick(int Position, String text) {
                                        if (!TextUtils.isEmpty(text)){
//                                            n2 = n2 + Integer.parseInt(text);
                                            Cost_Quantity = Integer.parseInt(text);
//                                            Query query = daoSession.getCharge1Dao().queryBuilder()
//                                                    .where(charge1Dao.Properties.Item_ID.eq(Position+1))
//                                                    .orderAsc(charge1Dao.Properties.Item_Name)
//                                                    .build();
//                                            List<charge1> c = query.list();
//                                            for (int k = 0;k < c.size();k++){
//                                                Item_Name = c.get(k).getItem_Name();
//                                            }
                                            if (positionflag == Position){
                                                charge ch = new charge();
                                                ch.setName(Item_Name);
                                                ch.setTotal(Cost_Quantity);
                                                chargesList.add(ch);
                                                mDeviceHeaderMap1.put(Item_Name,Cost_Quantity);
                                                flag = false;
                                                Log.i(TAG,mDeviceHeaderMap1.toString());
                                            }

                                        }

                                    }
                                });

                            }

                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }

                    @Override//適配器模式,可以不實現該方法
                    public void onError(Response<String> response) {
                        Log.e(TAG, response.body().toString()+"");
                        Toast.makeText(chargeActivity.this,"網絡請求錯誤",Toast.LENGTH_SHORT).show();
                    }
                });
    }


    /**
     * 配置數據庫
     */
    private void setupDatabase() {
        //創建數據庫app.db"
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "app.db", null);
        //獲取可寫數據庫
        SQLiteDatabase db = helper.getWritableDatabase();
        //獲取數據庫對象
        DaoMaster daoMaster = new DaoMaster(db);
        //獲取Dao對象管理者
        daoSession = daoMaster.newSession();
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        startActivity(new Intent(this,accountActivity.class));
        finish();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章