2016-03-22 13 views
0

Ich habe eine Klasse als statisch mit einigen Attributen, die Klasse ist statisch, aber ich bekomme den Fehler, dass die Felder nicht statisch sind.Nicht statisches Feld kann nicht aus einem statischen Kontext referenziert werden

Ich kann nicht für eine Lösung herausfinden, die Beispiele, die ich sehe, sieht sehr ähnlich aus. Der Blick Halter sind immer innerhalb Adapter als statische oder public static

Hier mein ArrayAdapter ist:

public class NoteAdapter extends ArrayAdapter<Note> { 

public static class ViewHolder{ 
    TextView noteTitle; 
    TextView noteBody; 
    ImageView noteIcon; 
} 

public NoteAdapter(Context context, ArrayList<Note> notes) { 
    super(context, 0, notes); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Note note = getItem(position); 
    ViewHolder viewHolder; 

    if (convertView == null) { 
     viewHolder = new ViewHolder(); 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_row, parent, false); 

     // == Here I am getting the error == 
     ViewHolder.noteTitle = (TextView) convertView.findViewById(R.id.text_item_note_title); 
     ViewHolder.noteBody = (TextView) convertView.findViewById(R.id.text_item_note_body); 
     ViewHolder.noteIcon = (ImageView) convertView.findViewById(R.id.image_item_note); 

     convertView.setTag(viewHolder); 
    } 

    return convertView; 
} 

}

Hier ist meine Note Modell:

public class Note { 
    private String title, message; 
    private long noteId, dateCreateMilli; 
    private Category category; 

    public enum Category {PERSONAL, TECHNICAL, QUOTE, FINANCE} 

    public Note(String title, String message, Category category) { 
     this.title = title; 
     this.message = message; 
     this.category = category; 
     this.noteId = 0; 
     this.dateCreateMilli = 0; 
    } 

    public Note(String title, String message, Category category, long noteId, long dateCreateMilli) { 
     this.title = title; 
     this.message = message; 
     this.category = category; 
     this.noteId = noteId; 
     this.dateCreateMilli = dateCreateMilli; 
    } 

    public String getTitle() { 
     return this.title; 
    } 

    public String getMessage() { 
     return this.message; 
    } 

    public long getNoteId() { 
     return this.noteId; 
    } 

    public long getDateCreateMilli() { 
     return this.dateCreateMilli; 
    } 

    public Category getCategory() { 
     return this.category; 
    } 

    public TextDrawable getIconResource() { 
     return TextDrawable.builder().buildRound("P", android.R.color.darker_gray); 
    } 
} 

Ich werde deine Hilfe zu schätzen wissen. Danke im Voraus.

Antwort

5
ViewHolder.noteTitle = (TextView) convertView.findViewById(R.id.text_item_note_title); 
    ViewHolder.noteBody = (TextView) convertView.findViewById(R.id.text_item_note_body); 
    ViewHolder.noteIcon = (ImageView) convertView.findViewById(R.id.image_item_note); 

ViewHolder ist der Name der Klasse. Die Instanz heißt viewHolder (kleingeschriebener Anfangsbuchstabe). Die Felder noteTitle usw. sind Instanzenmitglieder und müssen mit einem Verweis auf eine Instanz bezeichnet werden (d. H. viewHolder).