如图所示,我正在连接两个 recyclerView。
其中之一是带有标题的分段 recyclerView。(下一个)
另一个是一个 recyclerView,它将底部的标题显示为选项卡。(上一个)
我动态地为他们获取数据集Retrofit
并分别设置它们
我想通过滚动底部的一项来突出显示顶部的一项。滚动成功完成,当底部 recyclerView 滚动并到达其标题位置时,顶部 recyclerView 会转到该特定位置。现在,当我滚动到那个位置时,我也想突出显示它。
我使用 xml 文件在选择时更改项目的颜色:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/chooseCAndZ" android:state_selected="true"/>
<item android:drawable="@color/colorAccent" android:state_focused="true"/>
</selector>
并执行以下工作以在单击时更改顶部 recyclerView 的颜色,效果很好:
@Override
public void onBindViewHolder(final FoodTopMenuAdapter.ViewHolder holder, int position) {
holder.mView.setSelected(selectedPos == holder.getAdapterPosition());
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Integer index = inList.get(holder.getAdapterPosition());
linearLayoutManager.scrollToPosition(index);
if (holder.getAdapterPosition() == RecyclerView.NO_POSITION) return;
notifyItemChanged(selectedPos );
selectedPos = holder.getAdapterPosition();
notifyItemChanged(selectedPos );
}
});
}
也可以滚动到底部 recyclerView 中的特定位置来完成这项工作onBindViewHolder
:
index = inList.get(vheader.getHeaderCategory());
foodRVLayoutManager.scrollToPosition(index);
现在的想法是从获取特定视图foodRVLayoutManager.getChildAt(i).setSelected(true);
以将视图颜色更改为selected
.
但主要问题是这些:
**
foodRVLayoutManager
只要能得到可见的孩子!这意味着更改颜色适用于可见的孩子。**
onClick
和scrollToPosition
互相干扰。