我正在尝试在我的 Android 应用程序中实现 ViewHolder,但我一直认为 ViewHolder 无法解析为类型,没有任何导入建议。有谁知道如何解决这个问题?
问问题
26952 次
3 回答
32
那是因为 aViewHolder
不是来自Android SDK 的类,您自己制作。根据我能找到的,aViewHolder
是一种实现,可以为更大的区域存储视图(通常是 ListView 中的每行),因此它是一种辅助类和缓存机制。这是我在 Android Developers 上找到的一个示例ViewHolder
,说明 a包含的内容。
static class ViewHolder {
TextView text;
TextView timestamp;
ImageView icon;
ProgressBar progress;
int position;
}
然后你可以在一个ListAdapter
或类似的类中实现它。
于 2012-12-30T01:29:35.963 回答
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;
}
于 2015-06-25T06:26:20.797 回答
0
也许您正在寻找 RecyclerView.ViewHolder,它是 android 支持库的一部分。
就像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 ,这对您来说很有意义
在这种情况下,他们需要一个对象来保存视图,以便可以根据需要填充内容。
于 2016-11-13T01:54:21.900 回答