我正在开发一个天气应用程序,其中我想在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;
}
无论position
中getItemViewType()
的值是多少,该函数始终返回VIEW_TYPE_TODAY
。
有些人可以告诉我我做错了什么吗?
答案 0 :(得分:1)
覆盖getItemViewType
不足以使ListView具有异构行。您还需要覆盖getViewTypeCount()
,以便返回您想要拥有的异构行数(在您的情况下为2)。请记住,getItemViewType
必须返回[0, getViewTypeCount() -1]
答案 1 :(得分:0)
Here是异质回收视图的好例子。我不是作为解决方案发布的,而是针对那些正在寻找这种Recyclerview的人。希望它有所帮助。