2017-07-12 4 views
-3

Ich habe eine abstrakte Klasse MonthAdapterin MainActivity abstrakten Adapterklasse implementieren

MonthAdapter.java

public MonthAdapter(Context c, int month, int year, DisplayMetrics metrics) { 
    this.mContext = c; 
    this.mMonth = month; 
    this.mYear = year; 
    this.mCalendar = new GregorianCalendar(mYear, mMonth, 1); 
    this.mCalendarToday = Calendar.getInstance(); 
    this.mDisplayMetrics = metrics; 
    populateMonth(); 
} 
protected abstract void onDate(int[] date, int position, View item); 

} 

Und ich will es auf MainActivity des Gridview-Adapter wie folgt umzusetzen:

mGridView.setAdapter(new MonthAdapter(this, param[1], param[2], metrics)); 

Wie zu im Fügen Sie diese abstrakte Klasse hinzu, da die abstrakte Klasse in MainActivity nicht instanziiert werden kann und auch die Hauptklasse nicht direkt in die abstrakte Klasse erben kann, da MainActivity bereits auf Activity erweitert ist. Vielen Dank für die Antworten.

Antwort

0
mGridView.setAdapter(new MonthAdapter(this, param[1], param[2], metrics){ 
      @Override 
      public void onDate(int[] date, int position, View item){ 
      } 
); 
0

Sie können eine Klasse erstellen, die Ihre abstrakte Klasse erweitern, zum Beispiel:

public class MonthAdapterImpl extends MonthAdapter { 

    public MonthAdapter(Context c, int month, int year, DisplayMetrics metrics) { 
     super(c, month, year, metrics); 
    } 

    @Override 
    protected abstract void onDate(int[] date, int position, View item) { 
     // the code 
    }; 
} 

Hoffnung, das hilft.

Verwandte Themen