둘러 보았지만 해결 방법을 찾지 못했지만 이것이 최후의 수단입니다.조각/뷰 페이지에 다른 데이터를 설정하는 방법
저는 Xamarin-Android 프로젝트에서 작업 중이며 하나의 조각으로 된 뷰 페이지가 있습니다. 이 단편의 트릭은 단 하나의 단편이지만 필요한 수에 따라이 단편의 인스턴스를 많이로드하지만 각 단편은 한 오브젝트 (한 세트의 데이터)를로드해야한다는 점입니다. 내가 가진 문제는 반환 된 항목 (파일에서로드 된) 목록을 반복 할 때 분명히 모든 것을 반복하고 반환 된 데이터 집합을 내 조각으로 설정한다는 것입니다. 이것은 내가 같은 데이터를 가진 많은 단편들을 갖게한다. 필요한 것은 각 조각에 마지막 세트를로드하는 대신 한 세트의 데이터를로드하는 것입니다. 본질적으로 많은 인스턴스를로드하고 각 인스턴스가 하나의 오브젝트 데이터를 표시해야하는 단편이 있습니다. 어떻게해야합니까?
미리 도움을 청하십시오.
좋아, 아래를 참조하십시오 - 이것은 조각 클래스입니다. 나는 조각의 OnCreateView를 생략했다. 단편 리소스 만 팽창시키고 textviews를 얻는다. FragmentPagerAdapter 코드가 필요한지 알려주기 바란다. 이 하나의 조각에는 Count 및 GetItem overidden 메서드의 FragmentPagerAdapter 클래스에서 설정되는 많은 인스턴스가 있습니다. Count는 필요한 인스턴스의 수를 반환하고 "ThisFragment.newInstance (position); return"을 수행하는 GetItem을 반환합니다.
편집 : 코드는 새로운 조각을 만들 수있는 'FragmentPagerAdapter'의 책임이어야합니다 솔루션
private int mNum;
private string code, status;
TextView textviewMyObjectCode, textviewMyObjectStatus;
public static ThisFragment newInstance(int num)
{
ThisFragment myFragment = new ThisFragment();
MyObject myObject = new MyObject();
List<MyObject> myObjectList = MyObjectIO.LoadMyObjectsFromFile();
myObject.MyObjectNumber = myObjectList[num].MyObjectNumber;
myObject.MyObjectStatus = myObjectList[num].MyObjectStatus;
args.PutInt("num", num);
args.PutString("objectCode", myObject.MyObjectNumber);
args.PutString("objectStatus", myObject.MyObjectStatus);
myFragment.Arguments = args;
return thisFragment;
}
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
mNum = Arguments != null ? Arguments.GetInt("num") : 1;
code = Arguments.GetString("objectCode");
status = Arguments.GetString("objectStatus");
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
if (container == null)
{
return null;
}
View thisView = inflater.Inflate(Resource.Layout.object_fragment, container, false);
textviewObjectStatus = thisView.FindViewById<TextView>(Resource.Id.textviewObjectStatus);
textviewObjectCode = thisView.FindViewById<TextView>(Resource.Id.textviewObjectCode);
textviewObjectCode.Text = code;
textviewObjectStatus.Text = status;
return thisView;
}
솔루션을 제안하기가 어렵다면 코드를 게시해야합니다. – Jay
빠른 응답을 보내 주셔서 감사합니다. 전체 프로젝트 코드 또는 파일에서 데이터를 가져 와서 단편에로드하는 스 니펫 만 필요합니까? – darkniz
전체 프로젝트가 아닙니다. 단편을 다루는 코드 스 니펫 만 있습니다. – Jay