在CardScrollAdapter(link)的官方GDK文档中,它声明您可以覆盖public int getHomePosition()以使适配器定义新的“起始”位置(aka:显示/激活父CardScrollView时最初显示的视图)。问题是...我尝试执行此操作,但是适配器似乎未调用public int getHomePosition()

这是一个简化的示例...

public abstract class StackOverflowExample extends CardScrollAdapter
{
    private Context m_context = null;

    public StackOverflowExample(Context context)
    {
        super();
        m_context = context;
    }

    @Override public final int getCount()
    {
        return 3;
    }

    @Override public int getHomePosition()
    {
        return 1;
    }

    // Other misc adapter overrides here...

    @Override public View getView(int position, View view, ViewGroup parent)
    {
        Card glassCard = new Card(m_context);
        glassCard.setText("Position: " + position);
        return glassCard.getView(view, parent);
    }
}


当我初始化该适配器并将其分配给CardScrollView然后对其activate()进行分配时,显示的第一张卡为“位置:0”。

我的问题是,我是否错误地使用了getHomePosition()还是在最新的Glass Development Kit Preview版本中无法正常使用?

最佳答案

我实际上并没有使用getHomePosition(),但是在设置内容视图之后,我已经通过使用mCardScrollView.setSelection(homePosition)获得了与您描述的功能相同的功能。如果您现在还没有开始工作,这可能会有所帮助。

编辑:浏览了文档后,我认为它们的意思是像这样使用覆盖函数:

mCardScrollView.setSelection(getHomePosition())


否则,将其称为setHomePosition()更有意义

07-27 21:14