在学习swipe视图时,我有一些困惑。我不明白getItem中的位置(int位置)是做什么的,它指的是什么?适配器中的位置?文档说getItem(int position)只在片段不存在时调用,这是什么意思?
我学习了如何使用ArrayAdapter,我们必须将数组传递给ArrayAdapter,但是为什么我们不需要将片段数组传递给FragmentStatePagerAdapter呢?
最后,我想要做的是:我有一个包含多个项目的ListView,如果我点击它,它会简单地在另一个活动中显示项目名称(已经完成),然后我可以左右滑动查看列表中的其他项目。我怎么能这么做呢?我还需要在ListView中获取项目位置吗?
发布于 2015-11-16 14:58:02
根据我的经验,getItem(int position)会返回您希望它返回的内容。您可以看到该方法的返回类型为Object,因此可以从该方法发送任何内容。现在,如果我没记错的话,您需要的是单击每个ListView项目,您希望获得项目的文本,而getItem(int position)正是您所需要的。
假设您有一个名为listViewText的数组列表。然后,您可以将上述方法定义为
@Override
public Object getItem(int position){
return listViewText.get(position);
}从调用活动中,您可以在单击项目时调用它
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)。
https://stackoverflow.com/questions/33728570
复制相似问题