获取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());
}
}
}
}