动态获取列表里输入框中的内容

安卓的需求千变万化,今儿又接到一个需求——获取列表的输入框里的值。废话不多说,上代码

 private Context mcontext;
    private List<CodeModel> list;

    private String a;
    private String b;
	
    public YKQuanlityDetailsAdapter(Context mcontext, List<CodeModel> list) {
    
    
        this.mcontext = mcontext;
        this.list = list;

    }
    //接口
    public interface SaveEditListener{
    
    
		//方法
        void SaveEditss(String  id, String aa,String bb);
    }


    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    
    
        View view = View.inflate(mcontext, R.layout.activity_ykquanlity_detail2, null);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    
    
        holder.textView.setText(list.get(position).getFname());
    }

    @Override
    public int getItemCount() {
    
    
        return list == null ? 0 : list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
    
    
        TextView textView;
        EditText editText1, editText2;

        public ViewHolder(@NonNull View itemView) {
    
    
            super(itemView);
            textView = itemView.findViewById(R.id.reason_name);

            editText1 = itemView.findViewById(R.id.edit1);
            editText2 = itemView.findViewById(R.id.edit2);

            //写入监听
            editText1.addTextChangedListener(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) {
    
    
                    a=editable.toString();
                   if(editable!=null){
    
    
                       SaveEditListener mcontext = (SaveEditListener) YKQuanlityDetailsAdapter.this.mcontext;
                       mcontext.SaveEditss(list.get(getLayoutPosition()).getFid(),a,b);
                        b="";
                   }else{
    
    

                       SaveEditListener mcontext = (SaveEditListener) YKQuanlityDetailsAdapter.this.mcontext;
                       mcontext.SaveEditss(list.get(getLayoutPosition()).getFid(),a,b);
                   }
                }
            });

            editText2.addTextChangedListener(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(editable!=null){
    
    
                        b=editable.toString();
                        SaveEditListener mcontext = (SaveEditListener) YKQuanlityDetailsAdapter.this.mcontext;
                        mcontext.SaveEditss(list.get(getLayoutPosition()).getFid(),a,b);
                    }else{
    
    
                        b="";
                        SaveEditListener mcontext = (SaveEditListener) YKQuanlityDetailsAdapter.this.mcontext;
                        mcontext.SaveEditss(list.get(getLayoutPosition()).getFid(),a,b);
                    }
                }
            });
        }
    }

这是整个适配器的代码,与正常适配器不同的就是,写了一个接口,然后在输入框的动态监听的改变后的方法里调用接口里的方法,然后就是在页面类里实现适配器里的接口并重写接口里的方法,就能拿到从适配器获取到的输入框的值(Ps:我的是两个输入框,如果需求是一个的话,去掉一个就好)

Guess you like

Origin blog.csdn.net/m0_46366678/article/details/122898935