android app -- 关于listview的不复用,解决item状态改变的问题

我们在平常的开发中使用listView基本上都是复用使用,但是也有一些特殊情况时不能在使用复用例如listView中的每一项都能操作(比如有个editText输入内容,上下滑动之后,看输入框里面的内容是不是要被改变,或者在下面复用的时候出现了这个输入框里面的内容。比如,一个单选框,这一项选中之后,上下滑动之后,看这个选中状态是不是乱跑了,之前的选中状态是不是消失了。还有每个item都有一个加载动画,根据不同的结果展示不同状态,上下滑动后,这个状态都会乱了等等,凡是与item项状态有关的,复用的时候肯定就出问题了)这是就需要不服用的使用listView了,好了不多说了,看具体实现的代码吧:

private Animation operatingAnim;
//定义hashMap 用来存放之前创建的每一项item
HashMap<Integer, View> lmap = new HashMap<Integer, View>();
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final MyOneKeyItemViewHolder holder;
//        if (null == convertView) {
//            convertView = mInflater.inflate(R.layout.my_one_key_check, null);
//            holder = new MyOneKeyItemViewHolder();
//            this.holder = holder;
//            convertView.setTag(holder);
//            holder.imageViewLigft =(ImageView) convertView.findViewById(R.id.one_key_check_load);
//            holder.textViewChecks =(TextView) convertView.findViewById(R.id.one_key_checks);
//            holder.imageViewRight =(ImageView) convertView.findViewById(R.id.one_key_check_refresh);
//
//        }else{
//            holder = (MyOneKeyItemViewHolder) convertView.getTag();
//        }

        if (lmap.get(position) == null) {
            convertView = mInflater.inflate(R.layout.my_one_key_check, null);
            holder = new MyOneKeyItemViewHolder();
            this.holder = holder;
            convertView.setTag(holder);
            holder.imageViewLigft =(ImageView) convertView.findViewById(R.id.one_key_check_load);
            holder.textViewChecks =(TextView) convertView.findViewById(R.id.one_key_checks);
            holder.imageViewRight =(ImageView) convertView.findViewById(R.id.one_key_check_refresh);

            //Log.e("position", String.valueOf(position));

            if (operatingAnim != null) {
                holder.imageViewRight.startAnimation(operatingAnim);
            }  else {
                holder.imageViewRight.setAnimation(operatingAnim);
                holder.imageViewRight.startAnimation(operatingAnim);
            }
            Map<String,String> loadMap_ = mLoadList.get(position);
            String checks = mList.get(position);
            holder.textViewChecks.setText(checks);

//            String serviceType = loadMap_.get(checks);
//            loadDade(serviceType);

            lmap.put(position,convertView);


        } else {
            convertView = lmap.get(position);
            holder = (MyOneKeyItemViewHolder) convertView.getTag();
            if (holder.imageViewRight.getVisibility() == View.VISIBLE){
                if (operatingAnim != null) {
                    holder.imageViewRight.startAnimation(operatingAnim);
                }  else {
                    holder.imageViewRight.setAnimation(operatingAnim);
                    holder.imageViewRight.startAnimation(operatingAnim);
                }
            }
        }

        return convertView;
    }

我这个是一个图片的动画效果,效果图如下


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值