我想改变列表视图 "monitoredpatientlsit "中第一行的颜色。如果我点击allpatientslist中的一个项目,并且它已经存在于monitoredpatient中,那么这种改变就会发生。因此,假设我点击了第3项,而它也恰好是监控病人中的第3项。我希望代码能将监控病人中第一个视图的颜色改为红色。然而它没有,我认为这与 "notifydatasetchanged "方法有关,因为当我把它注释出来时,它将按照我想要的方式工作,但当我把它放回代码中时,颜色根本没有变化。有什么想法吗?
allpatientslist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (selectedpatients.contains(allpatients.get(position))){
selectedpatients.remove(selectedpatients.indexOf(allpatients.get(position)));
refomatToRed();
monitoredPatientListAdapator.notifyDataSetChanged();
view.setBackgroundColor(Color.parseColor("#F4F6F1"));
}else{
view.setBackgroundColor(Color.parseColor("#B0D880"));
selectedpatients.add(allpatients.get(position));
monitoredPatientListAdapator.notifyDataSetChanged();
}
}
});
public void refomatToRed(){
monitoredpatientslist.getChildAt(0).setBackgroundColor(Color.RED);
}
编辑:我只是在适配器里面实现了颜色的变化就解决了,因为每次由于滚动功能,通过视图删除一个项目,实际上这个项目是被破坏的,会失去任何格式化下来的内容。
当你在适配器上调用notifyDataSetChanged()时,列表被重新绘制。改变第一个子代的颜色没有任何效果,因为这个子代在下面一行被销毁。
monitoredPatientListAdapator.notifyDataSetChanged();
refomatToRed();