[英]How to scroll to an item at specific position (that is not in view), in recycler view in android?
[英]How to highlight a item in recycler view by position android
我正在开发一个需要微调器的应用程序,如果用户从微调器中选择了一些值,则需要平滑滚动该特定位置并突出显示该位置的项目。 我已经做了一些事情,我有一个方法,如果视图不可见,它将突出显示位置,如果视图不可见,则将不突出显示。 所以,我面临着这样的问题。
这是我从微调器获得职位的地方
versesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
final int possition = (int) versesSpinner.getSelectedItemId();
recyclerView.smoothScrollToPosition(possition);
setBackgroundColor(possition);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
这就是我突出显示项目的方法
public void setBackgroundColor(int position) {
for (int i = 0; i < versesList.size(); i++) {
View view = mLayoutManager.findViewByPosition(i);
try {
if (view != null) {
if (i == position)
view.setBackgroundColor(Color.parseColor("#504cbee7"));
else
view.setBackgroundColor(Color.WHITE);
}
} catch (Exception e) {}
}
}
这里的问题是在平滑滚动方法到达特定项目之前调用setBackground()
方法。
仅当视图可见且视图不为null时,才会进行突出显示。
请告诉我是否有其他方法可以实现这一目标,否则请告诉我如何确定平滑滚动到位置是否已达到特定项目
我希望这是有道理的。
您试图在项目完成滚动之前更改其背景。 一段时间后,请使用handler
安排该任务。
recyclerView.postDelayed(new Runnable(){
public void run(){
setBackgroundColor(possition);
}
},1000);
您可以考虑在这里回答我的问题,以查看如何按需突出显示RecyclerView
的项目。 现在,如果要平滑滚动到突出显示的位置,只需在调用notifyDataSetChanged()
函数之后立即添加smoothScrollToPosition(position)
notifyDataSetChanged()
。
因此highLightTheListItems()
函数可能看起来像这样,我从那里的答案中引用它。
public void highLightTheListItems() {
// Modify your list items.
// Call notifyDataSetChanged in your adapter
yourAdapter.notifyDataSetChanged();
// Now smooth scroll to the position you want.
}
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.