2012-12-30 13 views
13

Sto cercando di implementare ViewHolder nella mia app per Android, ma continuo a ottenere che ViewHolder non può essere risolto in un tipo, senza suggerimenti per un'importazione. Qualcuno sa come aggirare questo?Android: implementazione ViewHolder

+0

Ecco un buon esempio di ViewHolder http://smr-android.blogspot.ru/2014/04/implementing-listview-with-swipe.html –

risposta

28

Questo perché un ViewHolder non è una classe che è da Android SDK, lo fai da te. In base a ciò che posso find, un ViewHolder è un'implementazione che memorizza Views (per riga in un ListView in genere) per un'area più ampia, quindi è una sorta di classe helper e meccanismo di cache. Questo è uno example che ho trovato su sviluppatori Android di ciò che un ViewHolder dovrebbe contenere.

Quindi è possibile implementarlo in un ListAdapter o una classe simile.

+0

Pagina # 36: http://www.slideshare.net/arslantumbin/prestazioni-ottimizzazione-for-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

Forse stai cercando il RecyclerView.ViewHolder che fa parte del supporto Android di lib.

Come il codice da questo 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); 
    } 
} 

Questo avrebbe senso per voi se si sta lavorando con una Android RecyclerView

In questo caso hanno bisogno di un oggetto per contenere la vista in modo che possa essere riempito con il contenuto, se necessario.

Problemi correlati