- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
到目前为止,我一直在整理示例以了解整个 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/
我需要在一个循环中添加很多 View ,而这个 fragment 就是这样做的,应用程序还将有一个抽屉导航和操作栏,用户可以在其中执行操作。 所以我希望这个过程不会 a) 通过阻止用户来减慢应用程序,
以下是我的代码。我正在尝试向我已经创建的 LinearLayout *activity_dynamic* 添加一个 View public void onClick(View v) {
我是 android 应用程序开发的新手,我遇到了一个问题: 当按下我的 DrawerLayout 上的按钮时,我正在向我的主 LinearLayout 添加内容: private void swit
我正在尝试将 TextView 动态添加到线性布局,假设 TextView 是 boo,线性布局是 foo。 TextView boo = new TextView(this) LinearLayou
在 Android 中,当我将像 ImageView 这样的 View 对象添加到 FrameLayout View ,然后立即尝试调用 layout() 方法来重新定位添加的 View 对象时,它不
尝试通过添加新 Activity 和移动到该 Activity 的按钮来编辑 Android 教程应用程序,但在按下“发送”按钮后,我不断收到运行时异常错误(应用程序崩溃)。研究过许多类似的问题,但对
这是 LinearLayout 中的标准 addView。 table.addView(child); 但我需要用这种方式在我的布局中添加 View 请问有可能吗??! 最佳答
我需要用自己的自定义工具栏替换普通的工具栏。我使用以下代码,但没有显示任何内容: 我的MainActivity: public class MainActivity extends AppCo
我尝试在 FrameLayout fragment 中查看相机。但是,我得到了 java.lang.NullPointerException。这是 fragment 代码: public class
我最近开始为 android 开发,但在尝试向布局添加多个 View 时遇到了困难。它实际上适用于第一次触摸,但之后它什么都不做。日志虽然继续工作并显示已检测到触摸并显示事件的位置。我有以下代码 pu
正如您在图片中看到的,我可以选择 View 并使用“_root.addView(dragIcon);”添加 3 个 ImageView。 我的问题是 View 是一个简单 View 而不是 ViewG
我需要有关 ViewFlipper 的简单实现方面的帮助。当我在 Activity 的 onCreate 中膨胀 subview “ws.addView(childView)”时,脚蹼工作得很好。 当
我正在尝试使用 Framework7 作为我的 UI 创建一个 Cordova 应用程序。我正在尝试使用内联页面作为布局架构,但在设置我的项目时,我在控制台中收到以下错误: 未捕获的类型错误:myAp
我想通过 layoutInflater 将一个布局放入另一个布局。 这是 main_layout.xml 文件: 这是 vitrin_layout.xml 文件: 最后是我主
这是我的 MainActivity XML 文件: 这是 .java 文件: @Override protected void onCreate(Bundle savedInstanceSt
当我尝试运行以下代码时出现错误。模拟器给我这个错误信息,然后应用程序强制关闭:应用程序意外停止。 出了什么问题? import edu.chl.dat255.bluebanana.R; import
我对 ViewGroup.addView() 方法有疑问。我使用此代码向我的布局添加新 View : TalbeLayout parent = (TableLayout)findViewById(R.
我想制作一个 ScrollView 中的项目列表。所以我将 LinearLayout 放在 Scrollview 中。linearLayout 中已经有一个项目:添加项目的 View 。我希望该项目始
我在使用 LinearLayout 的 addView 方法时遇到问题。我不知道为什么,但如果我添加三个 View ,则只显示第一个。这是代码: Comment[] comments = posts[
我无法理解 ViewGroup 的 addView(View child, int index) 中 index 的功能。index 有什么用? index 可以是负值吗?它会影响 layout 或显
我是一名优秀的程序员,十分优秀!