J'ai un RecyclerView
dans un fragment où chaque ligne a un adaptateur qui gonfle une mise en page qui se présente comme suit: Mise à jour TextView en lignes RecyclerView sélectionnées
Je veux accéder à la valeur du EditText
(dans le code suivant numberET
) de chaque ligne et choisissez la valeur si EditText
n'est pas vide.
Comment puis-je faire un cycle sur chaque élément de RecyclerView (je pense à l'intérieur de l'adaptateur) pour avoir ce comportement? Comment puis-je accéder à l'EditText pour chaque élément pour récupérer la valeur et les utiliser dans le fragment?
Adaptateur: `
public class UserFBEditTextAdapter <T extends UserFBEditTextAdapter.ViewHolder> extends UserFBAdapter<UserFBEditTextAdapter.ViewHolder>{
public UserFBEditTextAdapter(List<UserFB> users,int layoutId, Context context) {
super(users, layoutId, context);
}
@Override
public UserFBEditTextAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
return new UserFBEditTextAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(UserFBAdapter.ViewHolder holder, int position) {
holder.userFB = users.get(position);
holder.usernameTV.setText(holder.userFB.getName());
}
public class ViewHolder extends UserFBAdapter.ViewHolder {
protected EditText numberET;
public ViewHolder(View itemView) {
super(itemView);
numberET = (EditText) itemView.findViewById(R.id.number_et);
}
}
}`
Fragment:
public class ExpenseCustomFragment extends Fragment {
private OnFragmentInteractionListener mListener;
private UserFBAdapter adapter;
private RecyclerView userCustomList;
public ExpenseCustomFragment() {
// Required empty public constructor
}
public static ExpenseCustomFragment newInstance() {
ExpenseCustomFragment fragment = new ExpenseCustomFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_expense_custom, container, false);
userCustomList = (RecyclerView) view.findViewById(R.id.amountlist_rv);
userCustomList.setLayoutManager(new LinearLayoutManager(getContext()));
NewExpenseDescriptionActivity activity = (NewExpenseDescriptionActivity) getActivity();
adapter = new UserFBEditTextAdapter(activity.getUsersGroup(), R.layout.listitem_expensecustom, getContext());
userCustomList.setAdapter(adapter);
return view;
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}
}
Merci! Donc, si je récupère le détenteur de 'RecyclerView', je vais avoir le même problème en raison d'un grand nombre de l'élément dans le' RecyclerView'. –
Impossible de comprendre ce que vous voulez dire. Peux-tu le faire? – azizbekian
Je veux dire, je reçois du 'RecyclerView' le support associé à une position donnée par' recyclerView.findViewHolderForLayoutPosition (position) '. Si je cycle sur le 'ViewHolder' contenu dans le' RecyclerView'and 'RecyclerView' a par exemple 20 éléments, alors que mon' Fragment' peut afficher seulement 4 éléments à la fois, je vais perdre le contenu de 'EditText' qui sont Pas affichée. Ai-je bien compris? –