2013-07-22 8 views
6

Mam kawałek kodu za pomocą AndroidAnnotations który jest bardzo podobny do tego znalezionego w:Dodawanie argumenty AndroidAnnotation wstrzykuje fasolę

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

Jednak - Chcę przekazać argument do adaptera listy, aby określić która lista - np.

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

Jaki jest najlepszy sposób powiązania companyName z adapterem? Nie mogę użyć konstruktora z AnroidAnnotations - i @AfterViews jest wywoływany przed @AfterViews z fragmentu nadrzędnego, więc nie mogę wtedy wywołać setterów.

Obecnie włamałem się do połączenia, aby ręcznie ustawić parametry, a następnie odświeżyłem widok i usunąłem @AfterViews - ale jest to paskudne i niewiarygodne, ponieważ powielam wzór w hierarchii.

EDIT

Wystarczy wywołanie seter pracuje w najprostszym przypadku - i to, co aktualnie mam. Ale nie działa dobrze w bardziej skomplikowanym przypadku. tj

EFragment-> EViewGroup-> EBean ListAdapter

Ponieważ nie mogę użyć konstruktora, muszę czekać, aż pełna hierarchia staje się i położył się przed fragment opowiada ViewGroup które firmy, aby pokazać firmę informacje, które z kolei przekazują ListAdapter firmie, dzięki której mogę uzyskać informacje o tym, którzy ludzie itp. Nie wymaga to dużego wysiłku, aby było bardzo niechlujnie i jeśli moje dane były w Internecie - interfejs prawdopodobnie wyglądałby jak strona internetowa od lat 90.

Miałem nadzieję, że skorzystam z czegoś takiego jak @Extras - lub mam możliwość przekazania argumentów dla @AfterInject do użycia, lub nawet umieszczenia identyfikatora companyId w kontekście fragmentów bez wiązania mojego ListAdaptera do pracy tylko z jednym typem Fragmentu. ..

+0

nie mogę zrozumieć, dlaczego seter dla companyName w t Adapter nie wystarczy. Myślę, że prosty setter osób z notifyDataSetChanged() jest najprostszym sposobem. –

+0

Z pewnością działa w najprostszym przypadku - i jest to, co obecnie mam. – Silver

Odpowiedz

2

Spróbuj

@EFragment 
public class MyFragment extends Fragment { 

    @FragmentArg("myStringArgument") 
    String myMessage; 

    @FragmentArg 
    String anotherStringArgument; 

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

} 

Źródło:

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

+0

Nie myśl, że to zostało wydane, gdy zadałem pytanie ... Ale to jest odpowiedź. Myślę. – Silver

+0

Co się stanie, jeśli klasa, do której chcemy dodać parametry, nie jest fragmentem, ale zwykłą fasolą? –

Powiązane problemy