Android-адаптер getView не перерисовывает изображение при прокрутке и уведомлении о событии - PullRequest
0 голосов
/ 01 марта 2011

Привет, у меня есть список, и я перерисовываю изображение, основываясь на настройке уведомления.По сути, я не могу понять, почему изображение НЕ перерисовывается.Я вижу в журнале, что он установлен.

Одновременно я попытался установить текстовое представление в том же виде, и это прекрасно работает.Что не так с изображением?Кто-нибудь может мне сказать?

Заранее спасибо!

   @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));  

       }
    }

Так что мое изображение и текст с синим цветом отображаются при первой загрузке списка.Как только уведомление происходит, я сначала обновляюсь, чтобы изменить тот, который в настоящее время PINK, на СИНИЙ, а затем изменить тот, который мне нужно обновить, с СИНЕГО на PINK в зависимости от предыдущего и текущего индекса элементов в списке.Обновление сделано на деятельности.Я вижу, что журнал печатает тот факт, что getMyNotificationChangedItemState () изменен, и изображение устанавливается, но я никогда не вижу изменений в пользовательском интерфейсе.

Почему это работает для TEXTVIEW и не работает для IMAGEVIEW?

1 Ответ

0 голосов
/ 01 марта 2011

Для адаптеров getView () вызывается, только когда текущее представление признано недействительным.

Удалось ли вызывать invalidate () для соответствующего представления после отправки уведомления?* Как еще одна проверка здравомыслия, как насчет переключения розового и синего и повторной попытки?

...