Comment obtenir les données pour Modifier du Texte dans un RecyclerView?
J'ai recyclerview à modifier le texte. Chaque ligne possède une édition de texte. Je suis en entrant des valeurs dans le texte à modifier manuellement et après j'ai entrer les valeurs, je veux obtenir ces valeurs dans chaque rangée. Je veux obtenir ces valeurs à l'activité principale. Il peut être de 10 à 20 lignes dans le recyclerview. Je veux obtenir toutes les valeurs dans ceux de modifier des textes.
C'est mon Adaptateur
public class SelectItemAdapter extends RecyclerView.Adapter<SelectItemAdapter.ItemHolder> {
private List<String> itemsName, itemsQty, itemsPCode, itemPlant;
private OnItemClickListener onItemClickListener;
private LayoutInflater layoutInflater;
public SelectItemAdapter(Context context, String[] mDataset) {
layoutInflater = LayoutInflater.from(context);
itemsName = new ArrayList<String>();
itemsQty = new ArrayList<String>();
itemsPCode = new ArrayList<String>();
itemPlant = new ArrayList<String>();
this.mDataset = mDataset;
}
@Override
public SelectItemAdapter.ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = layoutInflater.inflate(R.layout.custom_row_selected_item, parent, false);
return new ItemHolder(itemView, this);
}
@Override
public void onBindViewHolder(SelectItemAdapter.ItemHolder holder, final int position) {
holder.setItemName(itemsName.get(position));
holder.setItemQty(itemsQty.get(position));
holder.setItemPCode(itemsPCode.get(position));
holder.setItemPlant(itemPlant.get(position));
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount() {
return itemsName.size();
}
public Object getItemName(int position) {
return itemsName.get(position);
}
public Object getItemPCode(int position) {
return itemsPCode.get(position);
}
public Object getItemPlant(int position) {
return itemPlant.get(position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
onItemClickListener = listener;
}
public OnItemClickListener getOnItemClickListener() {
return onItemClickListener;
}
public interface OnItemClickListener {
public void onItemClick(ItemHolder item, int position);
}
public void add(int location, String iName, String iQty, String iPCode, String iPlant) {
itemsName.add(location, iName);
itemsQty.add(location, iQty);
itemsPCode.add(location, iPCode);
itemPlant.add(location, iPlant);
notifyItemInserted(location);
}
public void remove(int location) {
if (location >= itemsName.size())
return;
itemsName.remove(location);
notifyItemRemoved(location);
}
public static class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private SelectItemAdapter parent;
TextView textItemName, txtPCode, txtAvailableQty, txtTempQty, txtPlant;
Button bRemove;
EditText numPicker;
public ItemHolder(View itemView, SelectItemAdapter parent) {
super(itemView);
this.parent = parent;
textItemName = (TextView) itemView.findViewById(R.id.txtProductName);
txtAvailableQty = (TextView) itemView.findViewById(R.id.txtAvailbleQty);
txtPCode = (TextView) itemView.findViewById(R.id.txtPCode);
txtPlant = (TextView) itemView.findViewById(R.id.txtPlant);
bRemove = (Button) itemView.findViewById(R.id.bRemove);
numPicker = (EditText) itemView.findViewById(R.id.numberPicker);
bRemove.setOnClickListener(this);
}
public void setItemName(CharSequence name) {
textItemName.setText(name);
}
public void setItemQty(CharSequence name) {
txtAvailableQty.setText(name);
}
public void setItemPCode(CharSequence name) {
txtPCode.setText(name);
}
public void setItemPlant(CharSequence name) {
txtPlant.setText(name);
}
public String getQtyNumber() {
return numPicker.getText().toString();
}
public CharSequence getItemName() {
return textItemName.getText();
}
public CharSequence getItemPCode() {
return txtPCode.getText();
}
@Override
public void onClick(View v) {
final OnItemClickListener listener = parent.getOnItemClickListener();
if (listener != null) {
listener.onItemClick(this, getPosition());
}
}
}
}
C'est de cette façon que j'ai essayé d'obtenir des valeurs. Mais il n'est pas de travail
private String getNumPicNumber(int i) {
if (myRecyclerView.findViewHolderForLayoutPosition(i) instanceof SelectItemAdapter.ItemHolder) {
SelectItemAdapter.ItemHolder childHolder = (SelectItemAdapter.ItemHolder) myRecyclerView.findViewHolderForLayoutPosition(i);
numberPickerNumber = childHolder.getQtyNumber();
}
return numberPickerNumber;
}
La façon dont vous gérer le focus sur Modifier le texte dans RecyclerView? N'est-ce pas perdre de vue l'objectif de défilement.
OriginalL'auteur D.Madu | 2016-05-08
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'utiliser autant de listes, il suffit de créer une classe qui va contenir toutes les données d'un seul élément, il n'est pas nécessaire pour les boutons, utilisez juste le changement de texte auditeur à la place.
exemple de code
lors de l'utilisation addTextChangedListener sur chacun des editTexts, le texte sera en s CharSequence, ce texte sera enregistré dans _retData structure comme vous pouvez le voir. lorsque vous voulez obtenir les données de la carte appelez simplement retrieveData fonction
non, ils ne sont pas modifier le texte. Ceux que vous mettez addTextChangedListener, ils sont affichage de texte. **numPicker ** est le texte à modifier.
ainsi, au lieu de titulaire.setItemQty.addTextChangedListener viens de faire titulaire.numPicker.addTextChangedListener
merci pour la réponse. cela m'a aidé à aller vers une solution. j'ai donc accepter cette réponse
OriginalL'auteur visionix visionix
Pour ce faire il y a deux façons:-
1) Ajouter le Bouton enregistrer dans chaque ligne de RecyclerView
sur ce Bouton clic (onClick)
2) Ajouter onTextChangedListener à EditText
Puis dans votre MainActivity.java restauration de données à partir de sharedpreferences ou de la base de données
OriginalL'auteur Vishwesh Jainkuniya
Ajouter EditTextListener dans RecyclerView de l'Adaptateur et de mettre en œuvre TextWatcher dans EditTextListener.
Valeurs seront enregistrées dans le Tableau de Chaîne (mDataset)
Heureux De Codage.
OriginalL'auteur Bilal Ahmad
J'ai eu un problème similaire.Mon Recyclerview contenait un Textview, deux EditTexts et un Bouton supprimer pour supprimer l'élément de la Recyclerview. Je suis l'obtention de données provenant à la fois du Edittexts, à partir d'un modèle de classe à l'aide d'un bouton de mon activité. Tout fonctionne bien, je veux juste savoir ce que toutes les optimisations que je puisse faire. Veuillez faire part de vos suggestions, de manière détaillée.
Ma Classe De Modèle:
Ci-dessus classe contient les trois Chaînes de l'un est le titile et les deux tiennent le edittext de données.
Mon code d'Adaptateur:
Dans l'adaptateur, je suis l'aide de deux arraylists
rtyArray
etqtyArray
tenir la position de l'Edittext de données dans la classe du modèle.Les deux fonctions renvoient les positions de la Edittextdata
Mon Activité:
Dans mon cas, les deux la position de la tenue de tableaux sont toujours de la même taille.
OriginalL'auteur Pemba Tamang