2012-12-30 24 views
13

Ich versuche, ViewHolder in meiner Android-App zu implementieren, aber ich bekomme immer wieder, dass ViewHolder nicht zu einem Typ aufgelöst werden kann, ohne irgendwelche Vorschläge für einen Import. Wer weiß, wie man das schafft?Android: Implementieren von ViewHolder

+0

Hier ist ein gutes Beispiel für den ViewHolder http://smr-android.blogspot.ru/2014/04/implementing-listview-with-swipe.html –

Antwort

28

Das ist, weil ein ViewHolder nicht eine Klasse, die von das Android SDK ist, können Sie es selbst machen. Basierend auf dem, was ich kann find, ist eine ViewHolder eine Implementierung, die Ansichten (pro Zeile in einer ListView in der Regel) für einen größeren Bereich speichert, so ist es eine Art von Helfer-Klasse und Cache-Mechanismus. Dies ist eine example Ich fand auf Android-Entwickler, was eine ViewHolder enthalten würde.

static class ViewHolder { 
    TextView text; 
    TextView timestamp; 
    ImageView icon; 
    ProgressBar progress; 
    int position; 
} 

Dann können Sie es in einer ListAdapter oder einer ähnlichen Klasse implementieren.

+0

Seite # 36: http://www.slideshare.net/arslantumbin/Leistungsoptimierung-für-Android-32797106 –

1
**Create a Holder class** 

protected static class ViewHolderItems 
{ 
    private ImageView mStoreImage; 
    private TextView mStoreName; 
} 

And use In getView method of adapter 

public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolderItems viewHolder; 
     if (inflater == null) 
      inflater = (LayoutInflater) activity 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.coupen_row, null); 
      viewHolder = new ViewHolderItems(); 
      viewHolder.mStoreImage = (ImageView) convertView.findViewById(R.id.storeImage); 

      viewHolder.mStoreName = (TextView) convertView.findViewById(R.id.storeName); 

      convertView.setTag(viewHolder); 

     } 
     else 
     { 
      viewHolder = (ViewHolderItems) convertView.getTag(); 
     } 

     return convertView; 
    } 
0

Vielleicht suchen Sie nach dem RecyclerView.ViewHolder, der Teil der Android-Support-Bibliothek ist.

Wie der Code aus diesem Link gist by Paul Burke

public static class ItemViewHolder extends RecyclerView.ViewHolder implements 
     ItemTouchHelperViewHolder { 

    public final TextView textView; 
    public final ImageView handleView; 

    public ItemViewHolder(View itemView) { 
     super(itemView); 
     textView = (TextView) itemView.findViewById(R.id.text); 
     handleView = (ImageView) itemView.findViewById(R.id.handle); 
    } 

    @Override 
    public void onItemSelected() { 
     itemView.setBackgroundColor(Color.LTGRAY); 
    } 

    @Override 
    public void onItemClear() { 
     itemView.setBackgroundColor(0); 
    } 
} 

Dies würde für Sie Sinn machen, wenn Sie mit einem Android RecyclerView arbeiten

In diesem Fall sind sie ein Objekt benötigen die Ansicht zu halten, so dass es mit Inhalt gefüllt werden, wie benötigt.

Verwandte Themen