• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Why my items are not redrawn after invoking `invalidateViews()` ?

elad2109

Lurker
Apr 15, 2011
4
0
Why my items are not redrawn after invoking `invalidateViews()` ?

I ask because i try to refresh `listItems` after a bg-thread notify an image rsc was downloaded.

But nothing is updated. Only after exiting and re-entering the new icons are drawn.





I have an activity with `adapter` of type `SettingValueAdapter extends BaseAdapter`

it has a member:

`private SettingsValue[] values;`

it has two interesting methods:

@Override
public View getView(int position, View view, ViewGroup parent) {

AddressItem ai= (AddressItem)getItem(position);
DriveToNativeManager dnm = DriveToNativeManager.getInstance();


if (view == null) {
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.address_item, null);
}

view.setTag(R.id.addressItem,ai);
view.setTag(position);
view.findViewById(R.id.fullAddressItemCol).setVisibility(View.VISIBLE);
view.findViewById(R.id.addressItemTouch).setVisibility(View.GONE);
view.findViewById(R.id.addressItemImage).setVisibility(View.GONE);

if (ai != null) {
...
}
view.findViewById(R.id.addressItemIconLayout).setVisibility(View.VISIBLE);
Drawable icon = ResManager.GetSkinDrawable(ai.getIcon() + ".bin");
((ImageView)view.findViewById(R.id.addressItemIcon)).setImageDrawable(icon);

..
}

I attach a callback to the bg-thread (c language) image downloading process.

The callback switches to the ui-thread and calls this `refreshList`:



public void refreshSearchIconsOnSearchActivity() {

Runnable refreshViewEvent = new Runnable() {
@Override
public void run() {
Activity currentActivity = AppService.getActiveActivity();

if (currentActivity instanceof SearchActivity) {

Log.d("w", "refreshSearchIconsOnSearchActivity callback running in thread "
+ Thread.currentThread().getId() );
//results list
((SearchActivity) currentActivity).refreshList();

}
}
};
AppService.Post(refreshViewEvent);
}

However, the images are done downloading and are not refreshed on the activity.

They are refreshed only when I leave an re-enter the activity.

What am I missing?
 

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones