【问题标题】:how to add data from cursor to viewpager如何将数据从光标添加到viewpager
【发布时间】:2013-09-10 04:43:28
【问题描述】:

有没有办法将数据从光标添加到 viewpager,我的光标中有数据,例如 4 个项目,我需要将每个项目放在页面上如何使用光标和 viewpager 做到这一点? 谢谢。

【问题讨论】:

  • 是的,ViewPager 连接到 ViewPagerAdapter 以获取子 View,您可以在 ViewPagerAdapter 上添加新页面/删除页面,并通过调用 adapter.notifyDataSetChanged() 更新 ViewPager。
  • 您的意思是 PagerAdapter,我如何将它链接到光标?
  • 在这里了解您的问题。您是否正在寻找像 CursorAdapter 这样的自动光标更新?如果是,那是不可行的。您需要手动遍历 Cursor 并填充 PagerAdapter。
  • 不,我需要将光标的内容添加到 viewpager,这意味着我需要在 viewpager 中显示光标的内容,以便光标的每个项目都在不同的页面上。跨度>
  • 在这种情况下,您应该这样做:“您需要手动遍历 Cursor 并填充 PagerAdapter。”

标签: android android-viewpager android-cursor


【解决方案1】:

是的,这是可能的,您需要一个 PagerAdapter,它会将您的 PagerView 与数据绑定并生成显示在 PagerView 上的每个“项目”(每个片段或页面)。

所以先重写一个PagerAdapter,例如:

public class MyPagerAdapter extends PagerAdapter

然后您必须重写在 PagerAdapter 上生成每个项目的方法,即 instantiateItem() 方法。此方法为您提供一个名为 position 的整数参数,它对应于将显示在 PagerView 上的项目列表中的项目编号。想象一本书,如果每一页都是一个项目,那么页码就是位置。

所以根据这个位置,每个项目都会有所不同,您必须通过代码向适配器解释。为此,您可以使用此位置访问您的数据列表并在列表和页面之间创建对应关系。

假设您有一个带有人名的 Person 表,并且您检索所有条目,然后创建一个 List 来保存来自该游标的所有名称数据。您现在可以使用项目位置访问您的列表,例如,list.get(position),并通过从该特定列表项中检索数据,您可以创建必须在 instantiateItem 上返回的单个页面。例如,您可以对包含名为 personName 的 TextView 的布局进行扩充,然后执行personName.setText(list_name.get(position)) 之类的操作。现在返回 LayoutView。然后,适配器将为列表中的每个项目创建一个视图。

所以你可以这样做:

ArrayList<String> names_list = new ArrayList<String>();

然后将游标信息存储在该 List 上(您可以做多个列表,也可以使用 CursorAdapter 直接使用游标进行操作,这只是一个示例),然后实例化您的适配器:

MyPagerAdapter adapter = new MyPagerAdapter(context, layout, names_list); 

对于列表中的每个项目,适配器将运行 instantiateItem 方法并创建一个项目来填充 ViewPager,所以现在您所要做的就是将适配器与您的 ViewPager 绑定:

ViewPager pager = (ViewPager)findViewById(R.id.activity_search_viewpager);
pager.setAdapter(adapter);

这只是一个解释 PagerAdapter 工作原理的示例,这个主题还有更多内容。无论如何,一旦您对事情的工作方式感到满意,您还可以检查 CursorAdapter,这样您就可以直接从光标数据实例化项目,无需列表。

以下是一些您应该检查的 SDK 参考: http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html http://developer.android.com/reference/android/support/v4/widget/CursorAdapter.html

祝你好运:)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2018-03-28
  • 2017-11-24
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多