首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用FragmentStatePagerAdapter

使用FragmentStatePagerAdapter
EN

Stack Overflow用户
提问于 2015-11-16 12:33:01
回答 1查看 165关注 0票数 0

在学习swipe视图时,我有一些困惑。我不明白getItem中的位置(int位置)是做什么的,它指的是什么?适配器中的位置?文档说getItem(int position)只在片段不存在时调用,这是什么意思?

我学习了如何使用ArrayAdapter,我们必须将数组传递给ArrayAdapter,但是为什么我们不需要将片段数组传递给FragmentStatePagerAdapter呢?

最后,我想要做的是:我有一个包含多个项目的ListView,如果我点击它,它会简单地在另一个活动中显示项目名称(已经完成),然后我可以左右滑动查看列表中的其他项目。我怎么能这么做呢?我还需要在ListView中获取项目位置吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-16 14:58:02

根据我的经验,getItem(int position)会返回您希望它返回的内容。您可以看到该方法的返回类型Object,因此可以从该方法发送任何内容。现在,如果我没记错的话,您需要的是单击每个ListView项目,您希望获得项目的文本,而getItem(int position)正是您所需要的。

假设您有一个名为listViewText的数组列表。然后,您可以将上述方法定义为

代码语言:javascript
复制
@Override
public Object getItem(int position){
    return listViewText.get(position);
}

从调用活动中,您可以在单击项目时调用它

代码语言:javascript
复制
String listItemText;
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
             listItemText=adapter.getItem(position);
        }
    });

其中适配器是您的ListView适配器

更新

这是针对ListView适配器的。关于您对FragmentStatePagerAdapter的困惑,我认为文档试图说明的是,为了减少FragmentPagerAdapter中的内存消耗,适配器仅在开始时没有可用的片段状态时才使用getItem(int position)方法。这意味着第一次加载片段。现在,当特定片段被刷走时,适配器保存该片段(内容等)的当前状态,当稍后刷入该片段时,适配器将恢复保存的状态,而不是创建新的片段,因此只调用该方法一次。

请注意,如果以某种方式丢失了特定片段的状态,则适配器也可以调用getItem(int position)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33728570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档