2013-06-11 37 views
0

适配器这是我有:如何更新另一种观点认为

步骤1.有一个ListView,显示项目的用户可以评价。这是一个Fragment。任何已经评分的项目都是粗体。

第2步。如果用户点击未评分项目,它将当前列表保留在backstack中并打开新的Fragment;在新Fragment他们现在可以评价项目。

这就是我需要:

第3步:一旦他们打后退按钮,我想列表项到现在大胆地反映变化。

如果这不是Fragment,我认为startActivityForResult()将是答案;但不知道如何用当前(Fragment)设置完成此操作?

补充说明:ListViewadapterArrayList<Review>。当然,每行在Review对象中都有属性。一个房产是一个叫做wasRated的婴儿车,它可以是01;如果此参数为1,则表示用户对该项目进行评分,则列表行将变为粗体以反映此情况。这是我想要的动态。

+0

那么你想要做什么是当'片段2'关闭时重新呈现'片段1'列表?我理解了这些问题吗? –

+0

@NeilTownsend Bascially是的;我想只更新行,如果可能的话,不要重置'listview',这样用户必须向下滚动。 – KickingLettuce

+0

不会adapter.notifyDataSetChanged()做的伎俩? – Guardanis

回答

1

Android developer page on FragmentsCreating event callbacks to the activity部分表明,从FragmentActivity创建回调比较容易。

更一般地,您可以从Fragment确定Activity。假设:

  1. 您有启动两个片段的活性MyTopNotchActivity
  2. 存在活性的方法needToReRender()其触发重新描绘

在片段2:

MyTopNotchActivity activity = (MyTopNotchActivity) getActivity().findViewById(R.id.list); 
activity.needToReRender(); 

的活动然后可以告诉Fragment 1重新列出该列表。显然你可以改进needToReRender来接收有关确切需要重新渲染的信息。

警告:如果片段是由不同的活动创建的,这将不起作用。

+0

是的,他们都在同一个'FragmentActivity'下;所以我看到你在说什么...让我试试这个 – KickingLettuce

+0

所以我明白如何从片段#2调用回调方法。但是,一旦我在回调方法中,它必须立即调用片段#1中的方法来更改列表行;在我的所有测试中,我似乎无法在片段#1变化的同时对片段#1进行更改,而片段#2处于活动状态(并且字面上位于顶部)。 – KickingLettuce

+0

也许你需要在片段1中的'onResume'中检测到的片段1中设置一个标志,这样当它获得屏幕后,它会重新渲染? –