向AndroidAnnotation注入的bean添加参数

时间:2013-07-22 23:43:28

标签: android android-annotations

我有一段使用AndroidAnnotations的代码,它非常类似于:

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

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

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

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

我目前已经在调用中手动设置params,然后刷新视图并删除了@AfterViews - 但是当我在层次结构中复制模式时,它的讨厌和不可靠。

修改

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

EFragment-> EViewGroup-> EBean ListAdapter

由于我无法使用构造函数,所以我必须等到渲染完整的层次结构并在片段告诉ViewGroup哪个公司显示公司信息之前布局,这反过来告诉ListAdapter哪个公司所以我可以得到哪个人等 如果它变得非常混乱并且如果我的数据在网络上也不需要花费太多精力 - 用户界面可能会像90年代的网页一样呈现。

我希望使用类似@Extras的东西 - 或者有办法传递@AfterInject的参数来使用,或者甚至只是将companyId放在片段上下文中,而不是将我的ListAdapter绑定到仅使用一种类型的片段。

1 个答案:

答案 0 :(得分: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