2013-07-22 3 views
6

ich ein Stück Code AndroidAnnotations haben, die mit dem bei gefunden sehr ähnlich ist:Hinzufügen Argumente zu AndroidAnnotation injiziert Bohnen

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

jedoch - Ich möchte ein Argument der Liste Adapter passieren zu spezifizieren welche Liste - dh

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

Was ist der beste Weg, companyName mit dem Adapter zu verbinden? Ich kann den Konstruktor nicht mit AnroidAnnotations verwenden - und @AfterViews wird vor den @AfterViews des Elternfragments aufgerufen, sodass ich Setter dann nicht aufrufen kann.

Ich habe derzeit in einem Aufruf gehackt, um die Parameter manuell zu setzen, dann aktualisieren Sie die Ansicht und entfernt die @AfterViews - aber es ist böse und unzuverlässig, wie ich das Muster in der Hierarchie duplizieren.

EDIT

ruft einfach die Setter im einfachsten Fall arbeitet - und ist das, was ich zur Zeit. Aber funktioniert im komplizierteren Fall nicht gut.

dh

EFragment-> EViewGroup-> EBean ListAdapter

Da ich nicht den Konstruktor verwenden kann, muss ich warten, bis die volle Hierarchie wiedergegeben wird und angelegt, bevor das Fragment, das das Viewgroup sagt die Firma Firma zeigen Info, die wiederum dem ListAdapter mitteilt, welche Firma ich bekomme, welche Leute etc. Es braucht nicht viel Aufwand, um es sehr unordentlich zu bekommen und wenn meine Daten im Web waren - würde die UI wohl wie eine Webseite rendern aus den 90ern.

Ich hatte gehofft, etwas wie @Extras zu verwenden - oder habe eine Möglichkeit, Argumente für @AfterInject zu übergeben oder einfach nur die CompanyId in den Fragmentkontext zu legen, ohne meinen ListAdapter zu binden, um nur mit einem Fragmenttyp zu arbeiten. diese

@EFragment 
public class MyFragment extends Fragment { 

    @FragmentArg("myStringArgument") 
    String myMessage; 

    @FragmentArg 
    String anotherStringArgument; 

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

} 

Quelle ..

+0

ich kann nicht verstehen, warum ein Setter für die in t company Der Adapter ist nicht genug. Ich denke, dass ein einfacher Setter von Personen mit notifyDataSetChanged() der einfachste Weg ist. –

+0

Sicher funktioniert das im einfachsten Fall - und das habe ich zur Zeit. – Silver

Antwort