J'ai configuré une application qui remplit une vue de recyclage en utilisant des informations provenant d'une base de données SQL, par exemple. dates et heures etc ... J'ai récemment mis en place une petite section qui soit afficher ou masquer un textview selon si le textview ci-dessus est le même ou non. Par exemple, il peuplera la première Textview du 13/06/2017 et la rendra visible, si la prochaine date à afficher est la même, il masquera simplement la textview permettant à plusieurs résultats avec la même date de s'empiler sous l'autre.Visibilité de la vue textuelle Android avec vue de recyclage
Problème Mon code fonctionne comme il devrait être et empiler correctement. Le problème que j'ai est que lorsque je fais défiler la page vers le haut et vers le haut tous les en-têtes disparaissent. Cela est dû au fait que je n'ai pas correctement configuré mon viewHolder. Pourriez-vous éventuellement me donner des indications sur la situation?
Bind Voir
code permettant l'empilement de dupliquer plusieurs résultats
if (position - 1 >= 0) {
String currentDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date"));
cursor.moveToPosition(position - 1);
String previousDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date"));
Log.i("storedDates", currentDate);
if (currentDate.equalsIgnoreCase(previousDate)) {
txtHeader.setVisibility(View.GONE);
cardView.setVisibility(View.GONE);
} else {
txtHeader.setVisibility(View.VISIBLE);
txtHeader.setText(currentDate);
}
} else {
txtHeader.setVisibility(View.VISIBLE);
txtHeader.setText(cursor.getString(cursor.getColumnIndexOrThrow("complete_date")));
}
Démarrer ViewHolder
public static class Viewholder extends RecyclerView.ViewHolder{
TextView header;
public Viewholder(View itemView) {
super(itemView);
header = (TextView) itemView.findViewById(R.id.txtHeader);
}
}
OncreateViewholder et OnBindViewHolder
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mCursorAdapter.newView(mContext,mCursorAdapter.getCursor(), parent);
return new Viewholder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
mCursorAdapter.getCursor().moveToPosition(position);
mCursorAdapter.bindView(holder.itemView, mContext, mCursorAdapter.getCursor());
}
@Override
public int getItemCount() {
return mCursorAdapter.getCount();
}
Toutes les suggestions sont appréciés
Utilisez le modèle de classe et de tenir les données pour cacher et voir. – Amy
Donc votre dicton pour stocker la visibilité de la textview dans modal droite? Mais comment l'information serait-elle transmise au modèle et onclick ne se produit pas? – Steven
Qu'est-ce que cardView dans votre code est-il une partie en-tête? – Pavan