Я пытаюсь реализовать ViewHolder в своем приложении для Android, но я продолжаю получать то, что ViewHolder не может быть разрешен для типа, без каких-либо предложений по импорту. Кто-нибудь знает, как обойти это?
Android: реализация ViewHolder
Ответ 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
В этом случае им нужен объект для хранения представления, чтобы он мог быть заполнен содержимым по мере необходимости.