我有一段使用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/