Android 获取RecyclerView Item中EditText输入值

获取RecyclerView Item中EditText输入值


import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.xuf.lonwinofficauto.R;
import com.example.xuf.lonwinofficauto.view.EditextInput;

import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CustomerAdapter extends RecyclerView.Adapter<CustomerAdapter.MyViewHolder> {
    
    

    private Context mContext;
    private List<CheckPcEntity.DataBean.ZInfoListBean> data;
    private List<CheckFS.DataBean> dataBeanList;
    private String type;


    public interface SaveEditListener {
    
    

        void SaveEdit(int position, String string);
    }

    public CustomerAdapter(List<CheckPcEntity.DataBean.ZInfoListBean> data, List<CheckFS.DataBean> dataBeanList, String type, Context mContext) {
    
    
        this.data = data;
        this.type = type;
        this.dataBeanList = dataBeanList;
        this.mContext = mContext;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    
    
        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(mContext).inflate(
                R.layout.check_pc_item_layout, parent, false));
        return holder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
    
    

        holder.tv1.setText(data.get(position).getKhrname());
        holder.tv2.setText(data.get(position).getKhbm());
//        holder.tv3.setText(data.get(position).getKhrname());
        //添加editText的监听事件

        holder.tv3.setHintTextColor(Color.WHITE);
        if (type.equals("1")) {
    
    
            holder.tv3.addTextChangedListener(new TextSwitcher(holder));
            //通过设置tag,防止position紊乱
            holder.tv3.setTag(position);
            holder.tv3.setFocusable(true);

        } else {
    
    
            holder.tv3.setFocusable(false);
            for (int i = 0; i < dataBeanList.size(); i++) {
    
    
                if (dataBeanList.get(i).getKhrid().equals(data.get(position).getKhrid())) {
    
    
                    holder.tv3.setText(dataBeanList.get(i).getFsval() == null ? "-" : dataBeanList.get(i).getFsval() + "分");
                }
            }
        }


    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder {
    
    

        TextView tv1;
        TextView tv2;
        EditText tv3;

        public MyViewHolder(View view) {
    
    
            super(view);
            tv1 = (TextView) view.findViewById(R.id.tv1);
            tv2 = (TextView) view.findViewById(R.id.tv2);
            tv3 = (EditText) view.findViewById(R.id.tv3);
        }
    }

    //自定义EditText的监听类
    class TextSwitcher implements TextWatcher {
    
    

        private MyViewHolder mHolder;

        int l = 0;//记录字符串被删除字符之前,字符串的长度
        int location = 0;//记录光标的位置
        String data;

        public TextSwitcher(MyViewHolder mHolder) {
    
    
            this.mHolder = mHolder;
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
    
            // TODO Auto-generated method stub
            l = s.length();
            location = mHolder.tv3.getSelectionStart();
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
    
    
            if (!TextUtils.isEmpty(s.toString())) {
    
    
                Pattern p = Pattern.compile("[0-9]*");
                Matcher m = p.matcher(s.toString());
                if (m.matches()) {
    
    
                    int number = Integer.valueOf(s.toString());
                    if (number <= 100 && number >= 1) {
    
    
                        if (s != null) {
    
    
                            data = s.toString();
                        }
                    } else {
    
    
                        Toast.makeText(mContext, "请输入范围在" + "100" + "-" + "1" + "之间的整数", Toast.LENGTH_SHORT).show();
                        mHolder.tv3.setText(data);
//                        mHolder.tv3.setSelection(data.length());
                        Log.i("11111", "onTextChanged: " + data);
                    }
                } else {
    
    
                    if (!TextUtils.isEmpty(s.toString())) {
    
    
//                            new ToastUtil(context).showShortToast("请输入数字");
                        Toast.makeText(mContext, "请输入数字", Toast.LENGTH_SHORT).show();
                    }
                    mHolder.tv3.setText("");
                }
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
    
    
            //用户输入完毕后,处理输入数据,回调给主界面处理
            SaveEditListener listener = (SaveEditListener) mContext;
            if (s != null) {
    
    
                listener.SaveEdit(Integer.parseInt(mHolder.tv3.getTag().toString()), s.toString());
            }

        }
    }

}

猜你喜欢

转载自blog.csdn.net/Chen_xiaobao/article/details/125411252