gpm.unity icon indicating copy to clipboard operation
gpm.unity copied to clipboard

GPM UI 에 infinite Scroll관련해서 질문드립니다

Open woowr0128 opened this issue 2 years ago • 4 comments

Service

  • [ ] WebView
  • [ ] AssetManagement
  • [ ] Communicator
  • [ ] LogViewer
  • [ ] Manager
  • [x] UI
  • [ ] Profiler
  • [ ] Adapter
  • [ ] DLST

Version

Write the version that you are currently using. GPM UI 2.4.0

Summary

A clear and concise description of what the question is.

infinite scroll 을 사용해서 UI 구현 중 UI 목록에 이름을 item : 0 > 원하는 리스트이름으로 수정하고싶은데 관련 코드의 위치를 알수있을까요?

Screenshots

If applicable, add screenshots to help explain your question.

Additional context

Add any other context about the problem here.

woowr0128 avatar Apr 28 '22 01:04 woowr0128

문서(링크)의 스크롤 데이타 적용을 확인하시면 됩니다.

스크롤 데이타 적용

  • InfiniteScrollItem 상속받은 클래스 내에서 콘텐츠(Content)의 데이타(Data)를 적용하여 사용합니다.
    public override void UpdateData(InfiniteScrollData scrollData)
    {
        base.UpdateData(scrollData);
    
        // InfiniteScrollData 콘텐츠로 데이타 적용
    }
    

SampleScene셈플씬을 열어보시면 연결된 스크롤에 InfiniteScroll이 붙어있고 ItemPrefab인자 ItemPrefab에 VerticalItem, HorizontalItem가 연결된 것을 볼 수 있습니다.

그리고 각 프리팹에서는 TestItem가 붙어있는것을 볼 수 있습니다. 이는 TestItem.cs코드를 통해 해당 내용이 구현 되있습니다.

InfiniteScrollSample.cs의 InsertData와 같이 InfiniteScrollData를 상속 받은 TestItemData데이타를 스크롤에 넣고

InfiniteScrollSample.cs
public void InsertData()
{
     TestItemData data = new TestItemData();
     data.index = index++;
     dataList.Add(data);

     verticalScrollList.InsertData(data);
     horizontalScrollList.InsertData(data);
     
    ...
}

스크롤 아이템에 부착된 TestItem으로 데이타를 적용시키는 코드를 구현하면 됩니다.

TestItem.cs
public class TestItem : InfiniteScrollItem
{
   public Text text = null;
   public bool isVertical = true;

   public override void UpdateData(InfiniteScrollData scrollData)
   {
       base.UpdateData(scrollData);

       TestItemData itemData = (TestItemData)scrollData;
       StringBuilder sb = new StringBuilder();
       sb.Append(string.Format("Item : {0} ", itemData.index));
       sb.Append(itemData.description);
       text.text = sb.ToString();
   }
   ...

감사합니다.

smflt-nhn avatar Apr 28 '22 02:04 smflt-nhn

음.. 혹시 저가 만들어둔 리스트로 적용하는 부분을 설명해주실수있을까요? 알려주신 코드부분에 수정할 부분을 잘 모르겠어요

woowr0128 avatar Apr 29 '22 01:04 woowr0128

@woowr0128 만들어 놓으신 데이타가 List 이라는 가정하에 설명하자면 아래와 같이 데이타를 넣을 수 있습니다.

foreach(string text in yourList)
{
     TestItemData data = new TestItemData();
     data.text = text;

     scrollList.InsertData(data);
}

물론 TestItemData 는 text가 추가되어 있어야겠지요.

public class TestItemData : InfiniteScrollData 
{
     public string text;
}

그리고 스크롤 내부 코드 구현에 해당 text를 적용하면 됩니다.

public override void UpdateData(InfiniteScrollData scrollData)
{
    base.UpdateData(scrollData);

    TestItemData itemData = (TestItemData)scrollData;

    text.text = itemData.text;
}

smflt-nhn avatar Apr 29 '22 01:04 smflt-nhn

더 이상 질문 없으시면 이슈는 종료하겠습니다.

smflt-nhn avatar Jul 25 '22 09:07 smflt-nhn