EditText input value erase after scrolling down and scrolling up.
I followed many tutorials but nothing worked for me, I tried to implement Textwatcher but I can't perfectly implement it.
Someone please help, I'm stuck with this problem. Please give me a solution if it had multiple edittext too.
here is my adapter code.
public class ClassTestMarkAdapter extends RecyclerView.Adapter<ClassTestMarkAdapter.NviewHolder> {
private Context mCtx;
private List<ClassTestMarkModel> marklist;
public ClassTestMarkAdapter(Context mCtx, List<ClassTestMarkModel> marklist) {
this.mCtx = mCtx;
this.marklist = marklist;
}
@NonNull
@Override
public NviewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) {
LayoutInflater inflater =LayoutInflater.from(mCtx);
View v = inflater.inflate(R.layout.class_test_mark_list,null);
NviewHolder holder =new NviewHolder(v,new MyCustomEditTextListener());
return holder;
}
@Override
public void onBindViewHolder(@NonNull final NviewHolder nviewHolder, int position) {
ClassTestMarkModel markModel =marklist.get(position);
nviewHolder.myCustomEditTextListener.updatePosition(nviewHolder.getAdapterPosition());
nviewHolder.wrText.setText(marklist[nviewHolder.getAdapterPosition()]);
nviewHolder.stname.setText(markModel.getUserName());
nviewHolder.stroll.setText(markModel.getRoll());
nviewHolder.wrText.setText(markModel.getMarks());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mCtx);
Long instituteID = prefs.getLong("InstituteID",0);
final String inssid=String.valueOf(instituteID);
final String subId = prefs.getString("subId", "");
final String examids = prefs.getString("examidforct", "");
final String sessionId = prefs.getString("sesId", "");
final String cTMarkID=markModel.getcTMarkID();
final String insCTID=markModel.getInsCTID();
final String userID=markModel.getUserID();
nviewHolder.btnMark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RequestQueue myRequestQueue = Volley.newRequestQueue(mCtx);
String url = mCtx.getResources().getString(R.string.baseUrlLocal)+"setExamCTMarks";
final String xNon=nviewHolder.wrText.getText().toString();
Double wrsum= Double.valueOf(xNon);
if (wrsum>0){
nviewHolder.btnMark.setText("Success!");
nviewHolder.btnMark.setBackgroundColor(Color.parseColor("#009000"));
}
StringRequest myStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(mCtx,"Success! Data Posted Sucessfully",Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() { //Create an error listener to handle errors appropriately.
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(mCtx,"Error: Something Wrong...",Toast.LENGTH_SHORT).show();
}
}) {
protected Map<String, String> getParams() {
Map<String, String> MyData = new HashMap<String, String>();
MyData.put("CTMarkID", cTMarkID);
MyData.put("InsCTID", insCTID);
MyData.put("UserID",userID);
MyData.put("SessionID", sessionId);
MyData.put("SubjectID", subId);
MyData.put("ExamID", examids);
MyData.put("ObtainMarks",xNon);
MyData.put("InstituteID",inssid);
MyData.put("IsAbsent", "");
MyData.put("LoggedUserID", "123");
MyData.put("IP", "123");
return MyData;
}
};
myRequestQueue.add(myStringRequest);
}
});
}
@Override
public int getItemCount() {
return marklist.size();
}
class NviewHolder extends RecyclerView.ViewHolder{
TextView stname, stroll;
LinearLayout parentLayout;
Button btnMark;
EditText wrText;
//String wrMark;
public MyCustomEditTextListener myCustomEditTextListener;
public NviewHolder(@NonNull View itemView, MyCustomEditTextListener myCustomEditTextListener) {
super(itemView);
stname =itemView.findViewById(R.id.clsmarkName);
stroll =itemView.findViewById(R.id.clsmkRoll);
parentLayout = itemView.findViewById(R.id.ctMarkList);
btnMark =itemView.findViewById(R.id.clsmarkBtn);
this.wrText = itemView.findViewById(R.id.editText);
this.myCustomEditTextListener = myCustomEditTextListener;
this.wrText.addTextChangedListener(myCustomEditTextListener);
}
}
private class MyCustomEditTextListener implements TextWatcher {
private int position;
public void updatePosition(int position) {
this.position = position;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
marklist[position] = s.toString();
}
@Override
public void afterTextChanged(Editable s) {
}
}
}