【问题标题】:How to highlight a item in recycler view by position android如何通过位置android突出显示回收器视图中的项目
【发布时间】:2018-03-12 00:53:09
【问题描述】:

我正在开发一个应用程序,如果用户从微调器中选择一些值,我需要一个微调器,那么我需要平滑滚动该特定位置并突出显示该位置的项目。我已经为此做了一些事情,我有一个方法可以突出显示该位置,如果视图可见,如果视图不可见,则它不会突出显示。所以,我面临着这样的一些问题。

这是我从微调器获得位置的地方

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() 方法。

仅当视图可见且视图不为空时才会突出显示。

请告诉我是否有其他方法可以实现这一点,否则请告诉我如何确定平滑滚动到位置是否已到达特定项目

我希望它有意义。

【问题讨论】:

    标签: android android-recyclerview highlighting smooth-scrolling


    【解决方案1】:

    您正在尝试在项目完成滚动之前更改其背景。使用handler 在一段时间后安排该任务。

    recyclerView.postDelayed(new Runnable(){
        public void run(){
            setBackgroundColor(possition);
        }
    },1000);
    

    【讨论】:

    • 好主意,我会试试看,谢谢@Nabin Bhandari
    【解决方案2】:

    您可以考虑在my answer here 使用织机来检查如何按需突出显示RecyclerView 中的项目。现在,如果您想要平滑滚动到突出显示的位置,只需在调用 notifyDataSetChanged() 函数后添加 smoothScrollToPosition(position)

    所以highLightTheListItems() 函数可能看起来像这样,我从那里的回答中引用了这个函数。

    public void highLightTheListItems() {
        // Modify your list items. 
    
        // Call notifyDataSetChanged in your adapter
        yourAdapter.notifyDataSetChanged();
    
        // Now smooth scroll to the position you want.
    }
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多