android适配器getView不会在滚动和通知事件上重新绘制图像

时间:2011-03-01 02:38:12

标签: android listview adapter

您好我有一个列表,我正在根据通知设置重新绘制图像。基本上我无法弄清楚为什么图像不重绘。我在日志中看到它已经设置好了。

奇怪的是,我尝试在同一视图中设置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不起作用?

1 个答案:

答案 0 :(得分:0)

对于适配器,只有在当前视图无效时才会调用getView()。

您是否确保在发出通知后在相关视图上调用invalidate()?

作为另一项健全性检查,如何切换粉红色和蓝色并再次尝试?