我想使用RecyclerView
在新闻Feed中显示不同类型的故事。例如,一个故事可以有一个天气如何变化的模板。所以JSON数据将包含日期,温度等。
我从数据库下载故事作为JSON并解析它们。目前,我将解析的JSON对象存储在List<FeedStoryContainer>
中。
FeedStoryContainer
有两个属性,int
表示类型,Object
包含数据。当需要绑定数据时,我将Object
转换为基于int
类型的正确故事类型。这种方法可以吗?
答案 0 :(得分:1)
在我看来,你的故事类型应该具有相同的基础和api会更好。将它们保存在List&lt; StoryBase&gt;与api相同。根据类型(int)对对象进行转换是一种解决方案,但迟早它不会有所帮助。更好的是使用多态。
class Story
{
void apply( Viewer viewer )
{
System.out.println( "Default implementation" )
}
}
class News extends Story
{
void apply( Viewer viewer )
{
viewer.setTextBody( this.title + " " + this.content );
}
}
class Wheather extends Story
{
void apply( Viewer viewer )
{
viewer.setTextBody( this.title + " " + this.temperature );
}
}
code
List< Story > list;
for( Story story : list )
{
story.apply( this );
}