1

我的场景是我有一个活动显示存储在 SQLite DB 中的游标。主布局包含顶部的文本视图和列表视图。然后我使用 simplecursoradapter 将光标填充到 listadapter 并将 listadapter 放入 listview。simplecursoradapter 使用另一种布局。现在的问题是,当我使用 simplecursoradapter 时,我将三列带入列表视图,例如:项目名称、日期和价格。如果我不更改这些值,那没关系。

实际上我想在价格中添加一些字符串并形成新的字符串,例如货币符号。根据我的理解,我们只能为一个布局设置内容视图,而不是两个布局。我还尝试填充新布局并设置值但失败了

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看 textEntryView = inflater.inflate(R.layout.itemlist, null); TextView 价格 = (TextView) textEntryView.findViewById(R.id.price); price.setText(货币 + c.getString(4).toString());

甚至语法和运行应用程序都没有问题。但是当我运行应用程序并检查列表视图时,价格仍然只显示价格而不添加货币符号。我只能在主布局下添加货币符号,而不是 simplecursoradapter 中使用的第二个布局。

实际上,货币是在用户偏好中选择的,我使用 sharedpreference 来检索它的值并添加到光标中的价格值。似乎 simplecursoraapter 正在使用不同的布局,所以不能这样做。

有人对这个案子有想法吗?

如果为类似方法提供方法和代码,我将不胜感激。

谢谢 !!

4

2 回答 2

0

最后我用bindview解决了我的问题。在我的问题中,我已经提到我使用 simplecursoradapter 从 SQLiteDB 而不是数组获取数据。我知道 arrayadapter 有效,但它不能有效地用于 SQLite。在我扩展 baseadapter 以设计我自己的以在 textviews 上添加自定义视图之前。如果有大量数据,它可以工作,但速度太慢。所以simplecursadapter效率更高。

我出于自己的目的扩展了 simplecursoraapter 并覆盖了 bindview。它适用于我需要的东西。

感谢您的帮助和 arrayadapter 的链接

于 2010-12-22T09:29:48.943 回答
0

我不确定我是否 100% 关注您的问题,所以这可能不是您正在寻找的答案。

如果您想控制项目的布局在列表视图中的外观,您应该自定义实现ArrayAdapter

管理由任意对象数组支持的 ListView 的 ListAdapter。(...) 要使用 TextViews 以外的东西来显示数组,例如 ImageViews,或者要让 toString() 结果之外的一些数据填充视图,请覆盖 getView(int, View, ViewGroup) 以返回你想要的视图。

如果您只是在谷歌上搜索自定义 arrayadapter 示例,您应该会找到足够多的示例来展示如何实现它。两个这样的例子是:

祝你好运 :)

于 2010-12-19T11:57:28.553 回答