2017-10-13 5 views
0

ich an Projekten arbeiten, die viele verschiedene Arten von Listen verwenden, so habe ich dieseGibt es Nachteile beim Erstellen anonymer Instanzen von BaseAdapter?

BaseAdapter someAdapter = new BaseAdapter() { 
      @Override 
      public int getCount() { 
       return 0; 
      } 

      @Override 
      public Object getItem(int position) { 
       return null; 
      } 

      @Override 
      public long getItemId(int position) { 
       return 0; 
      } 

      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 
       return null; 
      } 
     }; 

und tun alle listenspezifischen Änderungen hier; Ist das eine schlechte Übung? Ich habe das Gefühl, einen neuen Adapter jedes Mal zu erweitern, um meine Projektdateien zu komplizieren, und das hilft mir, meinen Code besser zu organisieren. Gibt es irgendwelche Nachteile für diesen Ansatz, d. H. Etwas, das schiefgehen könnte/schlechter Code-Stil?

Es tut mir leid, wenn diese Frage breit/offtopic ist. Ich sah ein paar andere Fragen, die den General adv./disadv anfragten. von anonymen Klassen, aber nichts Spezifisches.

+1

Verwenden Recycler view.Check Link https://stackoverflow.com/questions/26245139/how-to-create-recyclerview-with-multiple-view-type – Anonymous

+0

Ihre Frage Meinung basierte und Wegthema daher –

+0

Ich bin nicht einverstanden. Jede Option wird deutliche Vor- und Nachteile haben (nicht auf Meinungen basierend, wie ich bereits sagte, Ästhetik, wie leicht überschaubarer Code ist nicht, was ich hier suche). Ich frage, ob es bestimmte Probleme gibt, regelmäßig anonyme Klassen für diese Anwendung zu verwenden – ColonD

Antwort

0

Wenn die verschiedenen BaseAdapters alle unterschiedliche Implementierungen haben, ist das in Ordnung.

Aber wenn Sie, dass viele Ihrer anonymen BaseAdapters wiederholen die gleiche (oder ähnliche) Code fühlen, dann für benannte Implementierungen gehen, weil Sie können sie wiederverwendet werden (Do not Repeat Yourself).

Es gibt kaum etwas, das mit anonymen Klassen im Vergleich zu named Klassen schief gehen kann. Was ich persönlich erlebt habe: Die technische Namensgebung der Klassen fügt dem einschließenden Klassennamen etwas wie "$ nnn" hinzu. Behalten Sie diese Klassennamen daher nicht bei und erwarten Sie, dass sie auch bei Versionsänderungen Ihrer Anwendung stabil bleiben. Es ist sehr wahrscheinlich, dass Sie nach dem Bearbeiten Ihrer Klasse verschiedene "$ nnn" -Suffixe mit der nächsten Zusammenstellung erhalten.

+1

und allgemeiner siehe auch [Erweitern einer Schnittstelle vs Instantiierung über anonyme Klasse] (https://stackoverflow.com/questions/22728932/extending-an -interface-vs-instantiating-via-anonyme-Klasse) – pirho

Verwandte Themen