【发布时间】:2014-12-23 07:38:55
【问题描述】:
我环顾四周,但找不到任何解决方案,所以这是我最后的选择。
我正在开发一个 Xamarin-Android 项目,并且我有一个带有一个片段的 viewpager。这个片段的技巧是,即使它只是一个片段,它也会加载这个片段的许多实例,具体取决于我需要多少,但问题是每个片段都需要加载一个对象(一组数据)。我遇到的问题是,当我遍历返回的项目列表(从文件加载)时,它显然会遍历所有内容并将最后一组返回的数据设置到我的片段上。这导致我有许多具有相同数据的片段。我需要将一组数据加载到每个片段上,而不是将最后一组数据加载到我的片段上。所以本质上,我有一个片段,它加载了许多实例,每个实例都需要显示一个对象的数据。我该怎么做?
提前感谢您的帮助。
好的,请看下面 - 这是片段类。我省略了片段的 OnCreateView,因为它只会膨胀片段资源并获取文本视图等。如果您还需要 FragmentPagerAdapter 代码,请告诉我。这个片段有很多实例,这些实例是在 FragmentPagerAdapter 类中的 Count 和 GetItem 重写方法中设置的。 Count 返回所需的实例数,GetItem 会返回“返回 ThisFragment.newInstance(position);”
编辑:使用解决方案更新代码
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;
}
【问题讨论】:
-
您需要发布代码,否则很难提出解决方案。
-
感谢您的快速回复。您需要整个项目的代码还是只需要从文件中获取数据并将其加载到片段上的 sn-p?
-
不是整个项目..只是处理片段的代码的sn-p。
-
好的,谢谢。我试图在这里发布我的代码,但它抱怨它太长了。请稍等。
-
你能把代码贴在你的主要问题中,以便你可以正确格式化它吗?
标签: android xamarin android-viewpager fragment fragmentpageradapter