2016-05-13 8 views
1

Das ist meine Klasse, die ich in meiner Realm-Datenbank speichern möchte. Beim Erstellen einer App wirft es "Error:A default public constructor with no argument must be declared if a custom constructor is declared." Aber bevor Realm verwendet wurde, war es in Ordnung - Standardkonstruktor wurde nicht benötigt. Auch ich habe Warnungen wie das: Warnung: (18, 1) Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type. Wie man Fehler behebt?Fehler bei der Verarbeitung von RealmObject-Descedant nach der Installation von Project Lombok

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

import java.util.ArrayList; 

import io.realm.RealmObject; 
import kg.zuber.aqe_android.R; 
import lombok.Data; 
import lombok.Getter; 

@Data 
public class Measure extends RealmObject { 
    @Getter 
    int id; 
    @NonNull 
    String name; 
    @Getter 
    @NonNull 
    String slug; 

    public Measure(int id, @NonNull String name, @NonNull String slug) { 
     super(); 
     this.id = id; 
     this.name = name; 
     this.slug = slug; 
    } 

    @Override 
    public String toString() { 
     return this.name; 
    } 

    public static class MeasureAdapter extends ArrayAdapter<Measure> { 
     private final Context mContext; 
     private ArrayList<Measure> measures; 

     public MeasureAdapter(Context context, ArrayList<Measure> mMeasures) { 
      super(context, R.layout.blue_spinner_item, mMeasures); 
      this.mContext = context; 
      measures = mMeasures; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      Measure device = measures.get(position); 
      if (convertView == null) { 
       convertView = LayoutInflater.from(getContext()) 
         .inflate(R.layout.blue_spinner_item, parent, false); 
      } 
      TextView textView = (TextView)convertView.findViewById(R.id.text); 
      textView.setText(device.name); 
      return convertView; 
     } 
    } 
} 
+0

Ein Standardkonstruktor war lange Zeit eine Voraussetzung für Realm. Das Hinzufügen sollte den Fehler beheben. Die Warnung scheint irgendwie mit Lombok zu tun zu haben. –

Antwort

3

Statt nur @Data, können Sie Folgendes verwenden:

@Data 
@AllArgsConstructor 
@NoArgsConstructor 
@EqualsAndHashCode(callSuper=false) 

und die Hand geschrieben Konstruktor entfernen.

Außerdem benötigen Sie nicht die @Getter Anmerkungen. Wenn Sie möchten, dass die Felder null-geprüft werden, sollten Sie @lombok.NonNull verwenden oder es anstelle von android.support.annotation.NonNull importieren.

Offenlegung: Ich bin ein Lombok Entwickler.