Ich habe ein Problem, wenn Sie eine Animation in meinem Adapter verwenden.Verwenden von Animation in Adapter mit ViewHolder-Muster
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(resource, parent, false);
holder = new ViewHolder();
holder.newRoomView = (TextView) convertView.findViewById(R.id.newRoom);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Room item = items.get(position);
// animate new rooms
if (item.isNewRoom()) {
AlphaAnimation alphaAnim = new AlphaAnimation(1.0f, 0.0f);
alphaAnim.setDuration(1500);
alphaAnim.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
holder.newRoomView.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
});
holder.newRoomView.startAnimation(alphaAnim);
}
// ...
return convertView;
}
Wenn Sie einen neuen Raum außerhalb des Adapters Hinzufügen und notifyDataSetChanged
der neue Raum Aufruf korrekt animiert wird, aber wenn onAnimationEnd
genannt wird, ein anderer (nicht neues Zimmer) ist ausgeblendet.
Gibt es eine Möglichkeit, den richtigen Raum versteckt zu bekommen?
Warum probierst du es nicht mit 'RecyclerView'? –
Posten Sie das Layout Ihres Artikels, PLZ – SilentKnight