您好我有一个列表,我正在根据通知设置重新绘制图像。基本上我无法弄清楚为什么图像不重绘。我在日志中看到它已经设置好了。
奇怪的是,我尝试在同一视图中设置textview,并且工作正常。图像出了什么问题?谁能告诉我?
提前谢谢!
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
//---- if the view is null, create a new one from xml
if (convertView == null)
{
LayoutInflater layoutInflater = _context.getLayoutInflater();
convertView = layoutInflater.inflate(R.drawable.my_item_layout, parent, false);
convertView.setBackgroundResource(R.drawable.mybg);
}
CustomItem item = super.getItem(position);
if (item != null)
{
TextView title = (TextView)convertView.findViewById(R.id.titleTextView);
ImageView image1= (ImageView)convertView.findViewById(R.id.image1);
title.setText(item.getName());
if (item.getMyNotificationChangedItemState()){
image1.setImageResource(R.drawable.myimagePink); <- this does not get updated
title.setTextColor(this._context.getResources().getColor(R.color.main_text_pink));
else
{
image1.setImageResource(R.drawable.myimageBlue);
title.setTextColor(this._context.getResources().getColor(R.color.main_text_blue));
}
}
所以我的蓝色图像&amp;第一次加载列表时会显示文本。一旦通知发生,我首先更新以将当前的PINK更改为BLUE,然后根据列表中项目的先前和当前索引将我需要更新的那个从BLUE更改为PINK。更新已在活动上完成。我可以看到日志打印出getMyNotificationChangedItemState()被更改的事实,并且正在设置图像,但我从未看到UI中的更改。
为什么这对TEXTVIEW有用而对IMAGEVIEW不起作用?
答案 0 :(得分:0)
对于适配器,只有在当前视图无效时才会调用getView()。
您是否确保在发出通知后在相关视图上调用invalidate()?
作为另一项健全性检查,如何切换粉红色和蓝色并再次尝试?