ListView Does Not Respond When Click And Entry Widget Does Not Print Image C++

ListView Doesn’t Respone When Click and Entry Widget Doesn’t Print UImage C++

Sorry For My English And Thank You For Your Answer

Here Is My Item Class Code

UCLASS()
class UCreateCharacterPresetData : public UObject
{
	GENERATED_BODY()
public:
	UPROPERTY()
	UTexture2D* PresetImage2DTexture;
	FString PresetName = "Sample";
};

Here Is My EntryWidget Code (PresetImage Is Uimage Instance)

void UCreateCharacterUserWidgetEntry::NativeOnListItemObjectSet(UObject* Obj)
{
	//이거 나중에 위젯에서 데이터 정리해야함
	UCreateCharacterPresetData* PresetData = Cast<UCreateCharacterPresetData>(Obj);
	if (IsValid(PresetData))
	{
		NameTextBlock->SetText(FText::FromString(PresetData->PresetName));
		PresetImage->SetBrushFromTexture(PresetData->PresetImage2DTexture);
		PresetImage->SetVisibility(ESlateVisibility::Visible);
		UE_LOG(LogTemp, Warning, TEXT("Entry Set Success"));
	}
	else
		UE_LOG(LogTemp, Error, TEXT("Entry Set Fail"));
}

void UCreateCharacterUserWidgetEntry::NativeOnItemSelectionChanged(bool bIsSelected)
{
	// 형광 연두색으로 설정하기 위한 FLinearColor 생성
	FLinearColor FluorescentGreenColor = FLinearColor(0.0f, 1.0f, 0.0f, 1.0f);

	// UImage 위젯의 ColorAndOpacity 속성 설정
	BackgroundImage->SetColorAndOpacity(FluorescentGreenColor);
	BackgroundImage->SetVisibility(bIsSelected ? ESlateVisibility::Visible : ESlateVisibility::Hidden);
	UE_LOG(LogTemp, Warning, TEXT("Entry Selection Changed"));
}

Here Is Part Of My UserWidget(Include ListView Component) Code

void UCreateCharacterUserWidget::NativeConstruct()
{
	Super::NativeConstruct();

	if (OKButton)
	{
		OKButton->OnClicked.AddDynamic(this, &UCreateCharacterUserWidget::OnOKButtonClick);
	}
	if (GenderButton)
	{
		GenderButton->OnClicked.AddDynamic(this, &UCreateCharacterUserWidget::OnGenderButtonClick);
	}
	if (NickNameEditTextBox)
	{
		NickNameEditTextBox->SetSelectAllTextWhenFocused(true);
	}
	if (CharacterPresetListView)
	{
		CharacterPresetListView->SetSelectionMode(ESelectionMode::Single);
		for (int i = 0; i < PresetImageMaterialList.Num(); ++i)
		{
			UCreateCharacterPresetData* PresetData = NewObject<UCreateCharacterPresetData>();
			PresetData->PresetName = PresetNameList[i];
			PresetData->PresetImage2DTexture = PresetImageMaterialList[i];
			PresetDataList.Add(PresetData);
		}
		CharacterPresetListView->SetListItems(PresetDataList);
		CharacterPresetListView->OnItemClicked().AddUObject(this, &UCreateCharacterUserWidget::OnListItemClick);
		UE_LOG(LogTemp, Warning, TEXT("CharacterPresetListView OnItemClicked"));
	}
	if (CharacterImage)
	{
		CharacterImage->SetVisibility(ESlateVisibility::Hidden);
	}
}

void UCreateCharacterUserWidget::OnListItemClick(UObject* Obj)
{
	UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Start"));
	//여기서 Obj가 위에 SetListItems에서 넣은 데이터중 1개임
	if (CharacterImage)
	{
		CharacterImage->SetVisibility(ESlateVisibility::Hidden);
		UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Image Hidden"));
	}

	UCreateCharacterPresetData* PresetData = Cast<UCreateCharacterPresetData>(Obj);
	if (PresetData)
	{
		FSlateBrush MyBrush;
		UE_LOG(LogTemp, Warning, TEXT("OnListItem Cast Success"));
		if (CharacterImage)
		{
			MyBrush.SetResourceObject(PresetData->PresetImage2DTexture);
			CharacterImage->SetBrush(MyBrush);
			CharacterImage->SetVisibility(ESlateVisibility::Visible);
			UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Image Visible"));
		}
	}
	UE_LOG(LogTemp, Warning, TEXT("OnListItemClick Finish"));
}

I Dont Know Why ListView Does Not Respone When I Click That
And Entry Widget Print Text Well, But Entry Widget Does Not Print Image
(I Assigned Texture Through Blueprint)

I’d Appreciate It If You Could Tell Me How To Solve It

I have find something important

OnNativeObjectSet method in Entry Widget calls AddToViewport
Clickable and image printed
However, it doesn’t fit the screen.

void UCreateCharacterUserWidgetEntry::NativeOnListItemObjectSet(UObject* Obj)
{

            //omit,,
            FSlateBrush MyBrush;
            PresetData->PresetImage2DTexture->UpdateResource();
            MyBrush.SetResourceObject(PresetData->PresetImage2DTexture);
            PresetImage->SetBrush(MyBrush);
            AsyncTask(ENamedThreads::GameThread, [this]()
                {
                    AddToViewport(); // 이걸 하니까 되네??? Finally
                });
           //omit,,,

As I know it
I understand that ListView automatically outputs ListEntryWidget.
But why do I keep a problem?

Finally I Solve It!!!

The Reason Is Entry Widget’s Anchor

Must Be Mind Entry Widget Is Not Add To Whole Screen
Entry Widget Is Add To List View,
So Do Not Fit An Anchor Into Canvas