gpt4 book ai didi

android - PagerAdapter 中的 instantiateItem(ViewGroup, int) 和 ViewPager 中的 AddView 混淆

转载 作者:IT老高 更新时间:2023-10-28 22:23:31 26 4
gpt4 key购买 nike

到目前为止,我一直在整理示例以了解整个 Android SDK 的 API。然而,我陷入了僵局。

我正在尝试使用 XML 文件中的 2 个 TextView 为 LinearLayout 充气。这些将是被分页的 View 。我根本无法让它工作,并意识到我完全不明白代码发生了什么。

查看源代码,我可以看到 ViewPager.addNewItem 方法从提供的适配器调用 InstantiateItem。 populate() 中调用了 addNewItem。 populate() 在许多其他地方被调用。

无论如何,在示例中,我已经体验到,当为 PagerAdapter 重写该方法时,必须在从 ViewPager 传递的 ViewPager 集合上包含对 addView() 的调用 作为参数。

如果我想添加多个 View ,我认为这将是多次调用 addView() 的情况,但由于 instantiateItem() 将 Object 返回给 ViewPager(在示例中我让它返回它添加的 View )我不知道返回什么。我试过返回膨胀的 View 和其他一些东西。

请问,有人能解释一下这里发生了什么吗?

非常感谢。

@Override
public Object instantiateItem(View collection, int position) {

layout = inflater.inflate(R.layout.animallayout, null);
TextView tv = (TextView) layout.findViewById(R.id.textView1);
tv.setText("1________________>" + position);

TextView tv2 = (TextView) layout.findViewById(R.id.textView2);
tv.setText("2________________>" + position);

((ViewPager) collection).addView(layout);
return layout;
}

最佳答案

我最近实现了这个,这是我的 instantiateItem 方法(为了便于阅读,它有点小。

@Override
public Object instantiateItem(View collection, int position) {
Evaluation evaluation = evaluations.get(position);

View layout = inflater.inflate(R.layout.layout_evaluation, null);

TextView evaluationSummary = (TextView) layout.findViewById(R.id.evaluation_summary);
evaluationSummary.setText(evaluation.getEvaluationSummary());

((ViewPager) collection).addView(layout);

return layout;
}

@Override
public void destroyItem(View collection, int position, Object view) {
((ViewPager) collection).removeView((View) view);
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}

所以对于显示的页面,我使用位置作为索引从我的 evaluations 列表中获取数据。然后膨胀具有 View 的 Layout 我也将添加我的数据。然后我得到 TextView 来设置评估摘要文本。然后将整个Layout 添加到ViewPager。最后 Layout 也被返回。

如果您仍然无法获得它,请发布您的代码。

关于android - PagerAdapter 中的 instantiateItem(ViewGroup, int) 和 ViewPager 中的 AddView 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com