Подтвердить что ты не робот

Android: реализация ViewHolder

Я пытаюсь реализовать ViewHolder в своем приложении для Android, но я продолжаю получать то, что ViewHolder не может быть разрешен для типа, без каких-либо предложений по импорту. Кто-нибудь знает, как обойти это?

4b9b3361

Ответ 1

Что, поскольку ViewHolder не является классом из Android SDK, вы делаете это сами. Основываясь на том, что я могу найти, a ViewHolder - это реализация, которая хранит Views (для каждой строки в ListView обычно) для большей области, поэтому это своего рода вспомогательный класс и механизм кэширования. Это один пример, который я нашел в Android Developers о том, что будет содержать ViewHolder.

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

Затем вы можете реализовать его в ListAdapter или аналогичном классе.

Ответ 2

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

Ответ 3

Возможно, вы ищете RecyclerView.ViewHolder, который является частью библиотеки поддержки android.

Как и код из этой ссылки 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); 
    } 
} 

Это будет полезно для вас, если вы работаете с Android RecyclerView

В этом случае им нужен объект для хранения представления, чтобы он мог быть заполнен содержимым по мере необходимости.