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

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

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

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

将companyName与适配器关联的最佳方法是什么?我不能将构造函数与AnroidAnnotations一起使用-并且@AfterViews在父 fragment 的@AfterViews之前被调用,因此我不能再调用setter了。

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

编辑

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

EFragment-> EViewGroup-> EBean ListAdapter

由于无法使用构造函数,因此我不得不等到呈现并布局完整的层次结构之后, fragment 才能告诉ViewGroup哪家公司显示公司信息,而这又告诉ListAdapter哪家公司,以便我可以找到哪些人,等等。
它变得很凌乱,并且如果我的数据在网络上,不需要太多的工作-UI可能会像90年代的网页一样呈现。

我希望使用@Extras之类的东西-或有一种传递参数供@AfterInject使用的方法,甚至只是将companyId放在Fragment上下文中,而不用绑定(bind)我的ListAdapter仅适用于一种类型的Fragment ...

最佳答案

试试这个

@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

关于android - 向AndroidAnnotation注入(inject)的bean添加参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17799279/

10-09 01:11
查看更多