当前位置: 代码迷 >> Android >> 关于ListView更新数据的有关问题
  详细解决方案

关于ListView更新数据的有关问题

热度:89   发布时间:2016-04-28 06:22:06.0
关于ListView更新数据的问题
我使用ListView和Adapter显示了数据库的数据,想点击一个Item改变item背景颜色,然后显示删除按钮,然后点击删除按钮就删除改item。
我用onListItemClick更改Item的背景颜色,现在问题来了,后续我点击item中的R.id.click_remove去删除这个item,对应的item删除了,但是改变背景颜色的view没有删除,和下一条数据结合在一起。
我想删除按钮点击以后数据和改变了背景色的view都能消失,请教大虾这里面到底是个什么原理?有什么好的办法可以去实现,谢谢!


当点击Item的时候改变背景颜色,同时显示一个控件:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
View removeView=v.findViewById(R.id.click_remove);
if(removeView.getVisibility()==View.GONE)
{
v.setBackgroundColor(getResources().getColor(R.color.blue));
removeView.setVisibility(View.VISIBLE);
}
else
{
v.setBackgroundColor(getResources().getColor(R.color.white));
removeView.setVisibility(View.GONE);
}
}


删除操作代码:
 @Override
                public void remove(int which) {
                 HashMap<String, Object> m=(HashMap)adapter.getItem(which);
                        list.remove(m);
        adapter.notifyDataSetChanged();
                }






------解决方案--------------------
关于背景颜色的代码写在adapter里的getview方法里。
------解决方案--------------------
引用:
假设adapter对应的每个view的都是不一样的,如果删除adapter数据源的一项后,使用notifyDataSetChanged():
1、对应adapter的view数量也会减少一个么?
2、如果减少,是会删除哪个位置的view呢?
你每次加载adapter就是一个view,删一个item就是删除一个view
  相关解决方案