6

我有一段使用 AndroidAnnotations 的代码,它与在以下位置找到的代码非常相似:

https://github.com/excilys/androidannotations/wiki/Adapters-and-lists

但是-我想将参数传递给列表适配器以指定哪个列表-即

@AfterInject
void initAdapter() {
    persons = personFinder.findAll(companyName);
}

将 companyName 与 Adapter 关联的最佳方法是什么?我不能将构造函数与 AnroidAnnotations 一起使用 - 并且 @AfterViews 在父片段的 @AfterViews 之前调用,所以我不能调用 setter。

我目前在调用手动设置参数然后刷新视图并删除@AfterViews - 但它令人讨厌且不可靠,因为我将模式复制到层次结构中。

编辑

在最简单的情况下,只需调用 setter 即可 - 这就是我目前所拥有的。但在更复杂的情况下效果不佳。IE

EFragment->EViewGroup->EBean ListAdapter

由于我不能使用构造函数,我必须等到完整的层次结构被渲染和布局,然后片段告诉 ViewGroup 哪个公司显示公司信息,这反过来告诉 ListAdapter 哪个公司,这样我就可以得到哪些人,等等。它变得非常混乱并不需要太多努力,如果我的数据在网络上 - UI 可能会像 90 年代的网页一样呈现。

我希望使用像@Extras 这样的东西 - 或者有一种方法可以传递@AfterInject 使用的参数,或者甚至只是将companyId 放在片段上下文中而不将我的ListAdapter 绑定到只使用一种类型的片段......

4

1 回答 1

2

尝试这个

@EFragment
public class MyFragment extends Fragment {

  @FragmentArg("myStringArgument")
  String myMessage;

  @FragmentArg
  String anotherStringArgument;

  @FragmentArg("myDateExtra")
  Date myDateArgumentWithDefaultValue = new Date();

}

资源:

https://github.com/excilys/androidannotations/wiki/FragmentArg

于 2014-10-07T19:57:06.920 回答