RecyclerView内部的异质布局

时间:2016-07-11 12:40:29

标签: android android-layout android-recyclerview android-cursoradapter

我正在开发一个天气应用程序,其中我想在Views内部RecyclerView使用两个CursorAdapter作为其成员。我想使用一个View来显示今天的天气和其他视图,以显示其他天气。如果我只使用一个RecyclerView来显示天气,我的View工作正常。我也覆盖了getItemViewType()? to get to know which View`类型我应该膨胀。

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;
}

我已覆盖的newView() CursorAdapter的代码:

@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;
}

无论positiongetItemViewType()的值是多少,该函数始终返回VIEW_TYPE_TODAY

有些人可以告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

覆盖getItemViewType不足以使ListView具有异构行。您还需要覆盖getViewTypeCount(),以便返回您想要拥有的异构行数(在您的情况下为2)。请记住,getItemViewType必须返回[0, getViewTypeCount() -1]

范围内的连续整数

答案 1 :(得分:0)

Here是异质回收视图的好例子。我不是作为解决方案发布的,而是针对那些正在寻找这种Recyclerview的人。希望它有所帮助。