簡體   English   中英

Android:實現ViewHolder

[英]Android: Implementing ViewHolder

我試圖在我的Android應用程序中實現ViewHolder,但我一直認為ViewHolder無法解析為某種類型,沒有任何導入建議。 有誰知道怎么解決這個問題?

這是因為ViewHolder不是來自 Android SDK的類,您可以自己制作。 基於我能找到的東西ViewHolder是一個實現,它為更大的區域存儲視圖(通常在ListView中每行),因此它是一種輔助類和緩存機制。 這是一個例子我在Android開發者發現一個什么樣的ViewHolder將包含。

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

然后,您可以在ListAdapter或類似的類中實現它。

**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;
    }

也許您正在尋找RecyclerView.ViewHolder,它是android支持lib的一部分。

就像保羅伯克這個鏈接的代碼一樣

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); 
    } 
} 

如果您使用Android RecyclerView,這對您有意義

在這種情況下,他們需要一個對象來保持視圖,以便可以根據需要填充內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM