I want to know how to get position of Edit Text from Recycler View adapter.I used Card View with in that horizontal Linear Layout has three view TextView,EditText view and
In onBindViewHolder method of your Adapter, set tag for your EditText like this:
holder.editText.setTag(position);
And in your ViewHolder, add TextWatcher to your EditText
public static class ViewHolder extends RecyclerView.ViewHolder {
EditText editText ;
public ViewHolder(View itemView) {
super(itemView);
editText = itemView.findViewById(R.id.editText);
MyTextWatcher textWatcher = new MyTextWatcher(editText);
editText.addTextChangedListener(textWatcher);
}
}
And here is your TextWatcher:
public class MyTextWatcher implements TextWatcher {
private EditText editText;
public MyTextWatcher(EditText editText) {
this.editText = editText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int position = (int) editText.getTag();
// Do whatever you want with position
}
@Override
public void afterTextChanged(Editable s) {
}
}
NOTE: Make sure you call
setTagmethod from yourEditTextbefore callingsetTextmethod, else it will throwNullPointerException. Or alternatively you can addnullcheck when callinggetTagmethod.
If your EditText already has another tag set, use ID to identify tags. e.g. when setting tag use this:
holder.editText.setTag(R.id.editText, position);
where R.id.editText is valid id of any of your resources (See documentation for details).
And also when getting value:
int position = (int) editText.getTag(R.id.editText);