我的方案是我有一个活动,显示存储在SQLite DB中的游标。主要布局包含顶部的textview和listview。然后我使用simplecursoradapter将游标填充到listadapter并将listadapter放入listview。 simplecursoradapter使用另一种布局。现在的问题是,当我使用simplecursoradapter时,我将三列列入listview,例如:项目名称,日期和价格。如果我不改变这些值,那就没关系。
实际上我想在价格上添加一些字符串并形成新的字符串,如货币符号。根据我的理解,我们只能将setContentView用于一个布局而不是两个布局。 我还尝试填充新的布局并设置值但是失败了
LayoutInflater inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看textEntryView = inflater.inflate(R.layout.itemlist,null); TextView price =(TextView)textEntryView.findViewById(R.id.price); price.setText(currency + c.getString(4).toString());
即使语法和运行应用程序也没有问题。但是,当我运行应用程序并检查列表视图时,价格仍然只显示价格而不添加货币符号。我只能在主布局下添加货币符号,而不是在simplecursoradapter中使用的第二种布局。
实际上,在用户首选项中选择货币,我使用共享首选项来检索其值并在游标中添加价格值。似乎simplecursoradapter使用不同的布局,所以不能这样做。
有没有人对此案有疑问?
如果为类似方法提供方法和代码,我将不胜感激。
谢谢!
答案 0 :(得分:0)
我不确定我是否100%关注您的问题,所以这可能不是您正在寻找的答案。
如果您希望控制项目布局在列表视图中的显示方式,则应自行制作ArrayAdapter
的自定义实现:
管理ListView的ListAdapter 由任意数组支持 对象。 (...)使用其他东西 比数组显示的TextViews, 例如,ImageViews,或者有 除了toString()之外的一些数据 结果填充视图,覆盖 getView(int,View,ViewGroup)来 返回你想要的视图类型。
如果您只是谷歌搜索custom arrayadapter example,您应该找到足够的示例来向您展示如何实施此功能。两个这样的例子是:
祝你好运:)答案 1 :(得分:0)
最后我使用bindview来解决我的问题。在我的问题中,我已经提到过,我使用simplecursoradapter从SQLiteDB中获取数据而不是数组。我知道arrayadapter有效,但它对SQLite不起作用。在我扩展baseadapter以设计我自己的文本视图之前添加自定义视图之前。如果有大量数据,它可以工作但速度太慢。所以simplecursoradapter更有效。
为了我自己的目的,我扩展了simplecursoradapter并覆盖了bindview。它适用于我需要的东西。
感谢您对arrayadapter的帮助和链接