当前位置: 首页 > 知识库问答 >
问题:

RecyclerView内部的异构布局

丌官嘉福
2023-03-14

我正在开发一个天气应用程序,我想在其中使用RecyclerView中的两个视图,它的成员是CursorAdapter。我想使用一个视图来显示今天的天气,另一个视图来显示其他日子的天气。如果我只使用一个视图来显示天气,我的RecyclerView就可以正常工作。我还覆盖了GetItemViewType()?以了解哪个视图`type I应该充气。

GetItemViewType()的代码:

private static int VIEW_TYPE_TODAY = 0;
private static int VIEW_TYPE_FUTURE_DAY = 1;

@Override
    public int getItemViewType(int position) {
        if(position == VIEW_TYPE_TODAY)
            return VIEW_TYPE_TODAY;
        else
            return VIEW_TYPE_FUTURE_DAY;
}

我已覆盖的CursorAdapterNewView()的代码:

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    int viewType = getItemViewType(cursor.getPosition());
    int layoutId = -1;
    if(viewType==VIEW_TYPE_TODAY)
        layoutId = R.layout.list_item_forecast_today;
    else if(viewType==VIEW_TYPE_FUTURE_DAY)
        layoutId = R.layout.list_item_forecast;
    View view = LayoutInflater.from(context).inflate(layoutId, parent, false);
    return view;
}

无论GetItemViewType()中的Position的值是什么,函数总是返回View_Type_Today

有人能告诉我我做错了什么吗?

共有1个答案

司徒骞尧
2023-03-14

重写GetItemViewType不足以使ListView具有异类行。您还需要重写getViewTypeCount(),以便返回您希望拥有的异类行的数量(在您的示例中为2)。请记住,您的GetItemViewType必须返回[0,getViewTypeCount()-1]范围内的连续整数

 类似资料:
  • 我正在一个屏幕上工作,其中有一个产品的工具栏信息和类似产品的列表。 除了滚动,一切都很好。当recyclerview出现在屏幕上时,滚动不顺畅。我认为这个想法应该是在没有滚动条的情况下使用recycler视图。因为现在看起来我有两个滚动条,这让滚动很痛苦。有没有一种方法可以让我禁用recyclerview的滚动条,并将其拉伸到所需的高度,让父滚动条平滑地滚动我的屏幕? 我使用的是StaggedGr

  • 我在我的嵌套scrollview中有recyckerview,当我的recrenegerview加载时,我对滚动没有问题,它非常平滑,但它的加载速度非常慢(它不是关于我的数据或网络)慢行是 当我从nestedscrollview(根元素的第一个子元素)中移动回收器视图时,它真的很快。这是我的xml 对于这个xml,它阻塞ui 3-4秒并加载它,但是如果我将recyclerview放在nesteds

  • 我正在使用最新的支持设计(),23.2版本中的支持设计应该已经解决了ScrollView内部的RecyclerView问题。RecyclerView和ExpandableListView滚动都能很好地工作。但是当ExpandableListView太长时,我希望能够向上滚动布局,以便可以看到其余部分时,scrollview就无法工作。 片段: xml:

  • 问题内容: 考虑一下Swift中的此类: 僵尸继承了Monster类的名称字段。 为什么 即使在函数头之前没有mutation关键字也能工作吗? 问题答案: 从语言指南- 方法中 : 从实例方法中修改值类型 结构和枚举是 值 类型。默认情况下,不能从其实例方法中修改值类型的属性。 但是,如果需要在特定方法中修改结构或枚举的属性,则可以选择对该方法进行行为更改。然后,该方法可以从方法内部更改(即更改

  • 我有一个包含ImageView和RecyclerView的Scrollview。如果导航抽屉打开然后关闭了RecyclerView自动滚动到顶部,如何停止?