Вы можете создать интерфейс для уведомления активности для изменения ввода (EditText) и сохранения нового значения.
создайте файл InputListener.java и напишите:
public interface InputListener{
void onChangeInputValue(String newValue, int position);
}
в вашей деятельности реализуйте интерфейс:
public class MainActivity extends Activity implement InputListener {
//...
@Override
public void onChangeInputListener(String newValue, int position) {
// here you can collect input data of each editText
}
//...
}
и в конструкторе вашего адаптера вы должны получить объект InputListener
. (в этом примере MainActivity
является экземпляром InputListener)
Раздел кода RecyclerView:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private ArrayList<Mydata> items;
private InputListener listener;
public MyAdapter(ArrayList<Mydata> mydata, InputListener listener) {
this.items = mydata;
this.listener = listener;
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
public EditText subjectName;
public TextView subjectNumber;
public MyViewHolder(View v) {
super(v);
SubjectNumber = (TextView) holder.view.findViewById(R.id.subjectNumber);
SubjectName = (EditText)holder.view.findViewById(R.id.subjectName);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
v = inflater.inflate(R.layout.subjectentry, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
SubjectNumber.setText(items.get(position).getSubNumber());
SubjectName.setText(items.get(position).getSubName());
SubjectName.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) {
listener.onChangeInputValue(charSequence, position);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
@Override
public int getItemCount() {
return items.size();
}