点击ListView 的item中的控件,删除当前item时,想让它一动画的方式 消失,但是,点击删除时,item可以删除掉,但是动画总是执行的最后一行 求解、??
这是主要代码
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mActivity).inflate(R.layout.layout_dialog_item_detial, null);
holder = new ViewHolder();
holder.tv_time = (TextView) convertView.findViewById(R.id.tv_time);
holder.tv_score = (TextView) convertView.findViewById(R.id.tv_score);
holder.iv_delete = (ImageView) convertView.findViewById(R.id.iv_delete);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
DiagHistory dh = historyLists.get(position);
holder.tv_time.setText(dh.getScanTime());
holder.tv_score.setText(dh.getDiaScore());
holder.iv_delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View itemView = (View) holder.iv_delete.getParent();
removeListItem(itemView, position);
SQLLiteService.getInstance(mActivity).deleteDialogHistory(holder.tv_time.getText().toString().trim());
}
});
return convertView;
}
class ViewHolder {
TextView tv_time, tv_score;
ImageView iv_delete;
}
private void removeListItem(View rowView, final int positon) {
final Animation animation = (Animation) AnimationUtils.loadAnimation(rowView.getContext(),
R.anim.remove_dialog_list_item);
animation.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
historyLists.remove(positon);
DialogItemDetailAdapter.this.notifyDataSetChanged();
animation.cancel();
}
});
rowView.startAnimation(animation);
}
View itemView = (View) holder.iv_delete.getParent(); //holder是个全局变量,最后指向界面显示的最后一条,所以你点随便哪一条,都是操作最后一条。这里需要当做参数传入到clicklisten中 removeListItem(itemView, position); 重新定义OnClickListener class SelfListener implements OnClickListener{ private View itemView; private int positon; private String txt; public SelfListener(View itemView,int positon,String txt){ this.itemView = itemView; this.positon = positon; this.txt = txt; } @Override public void onClick(View v) { removeListItem(this.itemView, this.position); SQLLiteService.getInstance(mActivity).deleteDialogHistory(this.txt); } } //设置监听 holder.iv_delete.setOnClickListener(new SelfListener((View) holder.iv_delete.getParent(),position,holder.tv_time.getText().toString().trim()));
http://ask.csdn.net/questions/252280