Ich versuche, so etwas zu tun: notifydatasetchanged() sieht Effekt nicht nach unten scrollen
zu erweitern oder reduzieren meine cardView
Ich nenne die notifydatasetchanged()
Methode, aber ich habe diese Methode setzt den Blick auf das erste Elemente und blättern Sie sehr schnell zu meiner alten Ansicht. Wie kann der Benutzer diese Schriftrolle nicht sehen? Zu meinem Problem hier zu zeigen ist ein Video: https://drive.google.com/open?id=0B7LMfg4tJlisVVlXajVuVlIyd3c
Mein Adapter
public class CardsViewAdapter erweitert RecyclerView.Adapter { Privat Spiel [] mDataset; // private boolean isPopupVisible = false; int rotationAngle = 0;
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a view holder
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView mTextView;
public ImageView imageView;
public LinearLayout test2;
public TextView test3;
boolean isPopupVisible;
public ViewHolder(View v) {
super(v);
mTextView = (TextView) v.findViewById(R.id.text_cards);
imageView = (ImageView) v.findViewById(R.id.item_description_game_more);
test2 = (LinearLayout) v.findViewById(R.id.popup_layout);
test3 = (TextView) v.findViewById(R.id.test_view);
isPopupVisible = false;
}
}
// Provide a suitable constructor (depends on the kind of dataset)
public CardsViewAdapter(Game[] myDataset) {
mDataset = myDataset;
}
// Create new views (invoked by the layout manager)
@Override
public CardsViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cards_resume_game, parent, false);
// set the view's size, margins, paddings and layout parameters
//...
ViewHolder vh = new ViewHolder(v);
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
//TODO : complete
final int pos = position;
holder.mTextView.setText(String.valueOf(mDataset[position].getId_game()));
holder.test3.setText("Position : "+pos);
// Set the expanded or collapsed mode here
if(mDataset[position].expanded)
expandView(holder.test2,holder.imageView);
else
collapseView(holder.test2,holder.imageView);
// Now set the onClickListener like this
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Animate the imageView here
animateImageView(holder.imageView);
// Toggle the expanded attribute value
if(mDataset[pos].expanded) mDataset[pos].expanded = false;
else mDataset[pos].expanded = true;
// Now call notifyDataSetChanged to make the change to effect
refreshList();
}
});
}
// Extra functions inside your adapter class to improve readability
private void collapseView(View v,ImageView imageView) {
CardsAnimationHelper.collapse(v);
}
private void expandView(View v,ImageView imageView) {
CardsAnimationHelper.expand(v);
}
private void animateImageView(ImageView imageView) {
ObjectAnimator anim = ObjectAnimator.ofFloat(imageView, "rotation",rotationAngle, rotationAngle + 180);
anim.setDuration(animationDuration);
anim.start();
rotationAngle += 180;
rotationAngle = rotationAngle % 360;
}
long animationDuration = 500;
private void refreshList() {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
}, animationDuration);
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return mDataset.length;
}
Verwenden notifyDataSetChanged() -Methode nicht, es zu versuchen: holder.imageView.setOnClickListener (neu View.OnClickListener() { @Override public void onClick (Blick v) { // die Toggle erweiterte Attributwert if (mDataset [pos] .expanded) mDataset [pos] .expanded = false; else mDataset [pos] .expanded = true; if (mDataset [Position] .expanded) Expand (holder.test2 , halter.imageView); else collapseView (holder.test2, holder.imageView); } }); –
Können Sie eine Antwort geben und ich akzeptiere es nach Überprüfung etwas – filol
Ich würde vorschlagen, es zuerst zu versuchen, wenn es hilft. –