我在我的项目中使用所有的Android架构组件(如Room DB、Live Data等)。目前,我遇到了一个问题:我有一个RecyclerView,它应该从Room DB中加载数据,并使用Paging库显示它。问题是有多个数据类代表新闻源中的项,并存储在Room中,我需要在一个RecyclerView中显示它们。
有什么简单的方法可以解决这个问题吗?例如,我是否可以创建一个接口,让所有这些类都使用它?
有什么简单的方法可以解决这个问题吗?例如,我是否可以创建一个接口,让所有这些类都使用它?
public interface NeewsFeedItem
String getTitle();
int getType();
String data();
...
@Override
public int getItemViewType(int position) {
// Just as an example, return 0 or 2 depending on position
// Note that unlike in ListView adapters, types don't have to be contiguous
return position % 2 * 2;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new ViewHolder0(...);
case 2: return new ViewHolder2(...);
...
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()) {
case 0:
ViewHolder0 viewHolder0 = (ViewHolder0)holder;
...
break;
case 2:
ViewHolder2 viewHolder2 = (ViewHolder2)holder;
...
break;
}
}
如需更详细信息,请参考this链接。
我想在recyclerView中添加标题。但是第一个位置不能有不同的项目类型,因为在重新加载项目后,库会导致recyclerview滚动到列表底部。
我创建了ViewHolder,它包含我的常规列表项和标题。这样,我的常规项目与标题位于位置0,库停止将recyclerView滚动到底部,因为第一项也是分页项。