Java RecyclerView重复项
我看了同样的话题,没有发现任何对我有帮助的。 这就是我的问题。我有一个回收站的活动。我正在使用Reformation2库获取新闻列表,如下所示:Java RecyclerView重复项,java,android,android-recyclerview,Java,Android,Android Recyclerview,我看了同样的话题,没有发现任何对我有帮助的。 这就是我的问题。我有一个回收站的活动。我正在使用Reformation2库获取新闻列表,如下所示: @GET(VERSION_V1 + "/news") Observable<BaseResponse<NewsListResponse>> getCompanyNews(@Query("companyId") String companyId,
@GET(VERSION_V1 + "/news")
Observable<BaseResponse<NewsListResponse>> getCompanyNews(@Query("companyId") String companyId,
@Query("query") String query,
@Query("offset") Integer offset,
@Query("limit") Integer limit,
@Query("creator") NewsCreatorType creator,
@Query("date")NewsFilterType dateFilter);
ofc我有一个RecyclerView适配器,这是我的onBindViewHolder
:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder baseHolder, int position) {
if (baseHolder instanceof ViewHolder) {
ViewHolder holder = (ViewHolder) baseHolder;
NewsViewModel newsViewModel = mResults.get(position);
holder.mTVTitle.setText(newsViewModel.getTitle());
holder.mTVContent.setText(newsViewModel.getContent());
if (NewsCreatorType.SYSTEM.equals(newsViewModel.getCreator())) {
holder.mTVCreator.setText(newsViewModel.getCreator().getTitle());
} else {
holder.mTVCreator.setText(
holder.mTVCreator.getContext().getString(
newsViewModel.getCreator().getTitle(),
mCompanyTitle
)
);
}
}
}
我有两家公司在做新闻。1号公司的新闻不重复,2号公司的新闻总是重复。。我不明白我的错误在哪里。我在GET上检查了(使用调试器)答案,它没有重复的消息,所以我想我的适配器出现了问题。。
多谢各位
编辑:
我只从Creator.SYSTEM获得重复新闻
编辑2.0:
好的,我删除了演示文稿中的
.flatMap
,现在它工作正常,但我不明白它为什么会出现,有人能解释一下吗?我猜,这段代码news.addAll(response.getResult().getItems())
可以再次添加相同的新闻(取决于您的mCompanyId
,等等。正如我所说的,我用调试器检查了演示者中的内容。我得到了不同新闻的列表。看起来您是对的,@TmTron!我刚刚删除了“.flatMap”,现在它工作正常。
@Override
public void onBindViewHolder(RecyclerView.ViewHolder baseHolder, int position) {
if (baseHolder instanceof ViewHolder) {
ViewHolder holder = (ViewHolder) baseHolder;
NewsViewModel newsViewModel = mResults.get(position);
holder.mTVTitle.setText(newsViewModel.getTitle());
holder.mTVContent.setText(newsViewModel.getContent());
if (NewsCreatorType.SYSTEM.equals(newsViewModel.getCreator())) {
holder.mTVCreator.setText(newsViewModel.getCreator().getTitle());
} else {
holder.mTVCreator.setText(
holder.mTVCreator.getContext().getString(
newsViewModel.getCreator().getTitle(),
mCompanyTitle
)
);
}
}
}