各位好心的大哥大姐们快帮帮我吧,小妹我调了一天一宿也没弄好,谁知道这是什么问题啊。自定义了一个listview,每个item上有个button,默认button是添加按钮,当点击的时候,变成删除按钮,每次在onclick更换图片的时候,总是改变最后一条的图片,请问这是什么原因。
解决方案 »
- android能直接访问sql server吗
- Failure retrieving icon,如何程序获取未安装程序的图标??
- webView加载flash时无法正常显示带中文的路径的swf文件。
- 如何不让代码读取Sim卡联系人信息 ?
- 在全屏幕上实现点击处产生控件的效果
- Android 14本经典教程和150多个实例源码
- android2.2 alarmclock 的snooze
- 格机之后googleMap无法使用了,怎么解决
- android src目录下配置文件的能写入么?
- json解析出现个问题
- 带tabhost的右推效果怎么实现
- 请问如何在被跳转的activity里判断上一个activity呢?
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null){
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.poi_search_in_city_item, null);
holder.img = (ImageView)convertView.findViewById(R.id.img_id);
holder.name = (TextView)convertView.findViewById(R.id.city_poi_name);
holder.address = (TextView)convertView.findViewById(R.id.city_poi_address);
holder.btn = (Button)convertView.findViewById(R.id.add);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));
holder.name.setText((String)mData.get(position).get("name"));
holder.address.setText((String)mData.get(position).get("address"));
holder.btn.setBackgroundResource((Integer)mData.get(position).get("add"));
holder.btn.setId(position);
holder.btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isAdd){
holder.btn.setBackgroundResource((Integer)mData.get(position).get("delete"));
}else{
holder.btn.setBackgroundResource((Integer)mData.get(position).get("add"));
}
flag = !flag;
}
});
return convertView;
}
就是下面的flag 刚写错了
@Override
public void onClick( View v) {
// TODO Auto-generated method stubif(isAdd){
holder.btn.setBackgroundResource((Integer)mData.get(position).get("delete"));
}else{holder.btn.setBackgroundResource((Integer)mData.get(position).get("add"));
}flag = !flag;}
if(isAdd[position]){
holder.btn.setBackgroundResource((Integer)mData.get(position).get("delete"));
}else{holder.btn.setBackgroundResource((Integer)mData.get(position).get("add"));
}isAdd[position] = !isAdd[position];
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
isCheckedMap.put(id,true);
}else{
isCheckedMap.put(id,false);
}
}
});
holder.cBox.setChecked(isCheckedMap.get(id));
里面的值用你保存起来的HashMap 的值 ,写的比较潦草 .
这个与ListView的缓存机制有关。当你屏幕滚动后,ListView中的item选项视图先检查缓存中是否有视图,如果有就用缓存中的,不过就是更新了一下绑定的数据