我们在平常的开发中使用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; }
我这个是一个图片的动画效果,效果图如下