显示空列表项,直到整个列表中的Android

问题描述:

enter image description here显示空列表项,直到整个列表中的Android

装我要实现这样的

enter image description here

我怎么能显示这种空空的列表,如在udemy结合一些动画像在snapchat中,直到整个列表被加载

+0

只需添加一个您想要的设计并隐藏列表视图,加载完成后隐藏占位符视图,并使ListView可见 – Zoe

+0

https://github.com/sharish/ShimmerRecyclerView – LordRaydenMK

现在,你解释了一点,我正在编辑这个答案。

为了做一些类似的东西Skyscanner上,显示假占位符,因为你无法检索有关数据的任何以前的信息,你必须遵循以下步骤:

SkyScanner fake placeholders

  • 对于动画有看看Lottie库,你可以做一个非常好的动画,并使这个动画循环运行,直到你有你的通话响应,在这里检查图书馆:https://github.com/airbnb/lottie-android Lottie是做矢量动画的好方法,它使用json文件,所以它是真的很轻,但你也可以做当然是旧式的动画。

  • 对于占位符的逻辑是这样的:您将要切换数据集的内容,适配器将检查数据集内的内容是否是您想要显示的真实数据的类型将填充真正的XML并使用真正的recyclerview持有者,如果这种类型不是真正的数据,那么您将使用占位符xml来扩充该行(相同的大小和配置以实现您正在查找的结果)和占位符的新的recyclerview持有者,以便您可以控制行的行为,例如根据位置控制您的动画或对比度对象行为。

考虑对象YourCustomObject您的真实数据的持有人,但可以是任何类型的,只要你做一个别样的你的假占位符的数据,适配器内部的逻辑是这样的:

@Override 
public int getItemViewType(int position) { 
    return mDataSet.get(position) instanceof YourCustomObject ? VIEW_TYPE_DATA : VIEW_TYPE_PLACEHOLDER; 
} 

然后

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    RecyclerView.ViewHolder holder; 
    if (viewType == VIEW_TYPE_DATA) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_real_data, parent, false); 
     holder = new RealDataHolder(v); 
    } else { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_placeholder, parent, false); 
     holder = new PlaceholderHolder(v); 
    } 
    return holder; 
} 

不要忘记检查持有人的类型上onBindViewHolder

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    if (holder instanceof RealDataHolder) { 
YourCustomObject data = (YourCustomObject) dataSet.get(position); 
(...) 

不要忘了,在适配器内部的数据集对象(Java类)的列表

我希望它能帮助。

+0

看起来像你没有得到我想要的,我的意思是空的占位符应该在那里之前得到的确切数量的列表项无所谓天气你有1或50它应该显示让我们说10个空占位符,然后出现完整列表 –

+0

嗯,我想过当我使用SkyScanner的应用程序时,他们会这样做,假占位符,使用我提供的相同代码,并将您的dataSet替换为其他类型的对象。上面的代码是检查数据类型到你的数据集中,并在其中显示一个占位符,所以缺少的是每当你触发一个新的调用来获取10(n)个不同的对象时,你的源数据内容切换信息。另外,如果你想要一个漂亮的占位符,我保留我的建议,使用Lottie,是一个梦幻般的光库,实现漂亮的动画。 –

+0

谢谢你,你真棒 –