安卓的需求千变万化,今儿又接到一个需求——获取列表的输入框里的值。废话不多说,上代码
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:我的是两个输入框,如果需求是一个的话,去掉一个就好)