ListView中点击每个item是可以通过setOnItemClickListener获取到View和position改变颜色的,也可以直接设置某个item为setSelection()选中状态来改变背景色。
但是如果我并不想设置item为选中,也不想通过点击item,而单纯只是想通过item在listview中的位置改改颜色呢?又或许我其它逻辑需要BlaBla。。。
通过ListView的getChildAt()勉强可以通过position获取到View来变色,但是众所周知getChildAt()只能获取到listView中可见的视图,对于那些out of屏幕的item怎么办?我给的position可是在整个ListView中的位置,可不只是可见视图中的位置啊。
没办法,只有重写Adapter的getView方法了。
基本思路:
1.在数据中添加一个boolean成员来判断用哪种颜色,例如isblue(蓝色?)
2.覆盖getView()。在getView()中根据isblue的值来设置item的背景颜色为蓝色或白色
3.每当我需要改变颜色时,改变数据中的isblue值,并且用Adapter的notifyDataSetChange()刷新数据
protected ListView mListView;
protected SimpleAdapter mAdapter;
protected List<Map<String,Object>> mList = new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mListView = (ListVi