Widget Variables become invalid

So I’m having this trouble for quite a while now and can’t solve this one.
I have a furniture BP that I’m trying to change its mesh through widget buttons:

The Furniture BP contains a static mesh, an array of static meshes (as variables), a variableIndex (int) and a widget (furniture widget).

The furniture widget contains a reference of the asset BP and a tile view to contain button widgets.

The button widget contains a button, a reference of the asset BP it gets from the furniture widget and a variationIndex (int).

In the furniture widget, I create a button widget for each variation of the furniture, set the variables inside and add them to the tile view.

Here’s where it gets weird:
After setting all of my button widgets inside the tile view I want to make sure their variables are valid, so I created a button (Print all widget buttons in blue) to print their variables (with the Print Variables function in green in the button widget) and they’re valid and correct!
BUT! When I press the button widget (in purple) which activate the same function, it shows the variables are NOT valid (I want to use this button later for a different purpose).

I can’t understand why! Is this a bug in UE5??
Sorry for the long post and I hope the image does its job…

Continued from the previous thread - you’re still not using the List View correctly.

The functionality of those specialised containers revolves around the underlaying objects holding data - the widgets are just fluff on top pulling the data out of the objects. For example, nowhere in your script above are you using the Interface the List View widgets must implement.


Consider the following:

image

  • the CustomPrimaryDataAsset holds some data we’d like widgets have access to
  • the ListViewObject is the the data the native List View operates on and uses to create widgets below
  • the wListViewEntry are the widgets generated automatically by the native List View, they will pull data from the ListViewObject - the interface is implemented here
  • the ListViewOwner is the widget that holds the native List View

List View Object

Exposing variable pins makes the blueprint flow clearer:

Above when the widget holding the native List View is added to the viewport, we create ListViewObjects and feed them data via the exposed parameters. No need for additional custom events and wires.

List View Entry

When a List View automatically generates its wListViewEntries, it will deliver the underlaying objects via the interface:

Oh wow! I was implementing User Object List Entry Interface in my widget, but it worked when I used a data entry (inherits from Object) inside my list view instead. Thanks!

1 Like