baidu_19694879 2016-04-26 03:33 采纳率: 50%
浏览 3314
已采纳

android listView 删除动画 当前Item 删了,但是动画总是从最后一行执行

点击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);
}
  • 写回答

5条回答 默认 最新

  • danielinbiti 2016-04-26 04:17
    关注
     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()));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 怎么在stm32门禁成品上增加记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 解riccati方程组