几周前我刚刚开始在android中进行编程,因此我不确定如何处理列表值。请帮帮我!
我对在列表中显示数据库中的数据集有一些疑问。目前,我有一个由数据库返回的游标指向行列表,并且我想在列表的单行中显示2列值。行xml如下所示:
<TextView android:id="@+id/text1"
android:textSize="16sp"
android:textStyle="bold"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/text2"
android:textSize="14sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
所以我在考虑使用simplecursoradapter,据说可以通过在列表中显示数据来简化我的生活。但是,只有当我想显示原始数据时,这才是正确的。
就我的程序而言,我需要对原始数据集进行一些计算,然后显示它们。我不确定如何使用SimpleCursorAdapter做到这一点。这是我显示原始数据的方式:
String[] from = new String[]{BtDbAdapter.KEY_EX_TYPE,BtDbAdapter.KEY_EX_TIMESTAMP};
int[] to = new int[]{R.id.text1, R.id.text2};
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter records =
new SimpleCursorAdapter(this, R.layout.exset_row, mExsetCursor, from, to);
setListAdapter(records);
在我将数据与SimpleCursorAdapter绑定之前,是否可以对这些行中的数据进行计算?我试图通过使用arraylist和arrayadapter来使用一种替代方法,但是那种方式我不知道如何实现在单行中显示2个项目。
这是我使用arrayadapter的代码,它仅连续显示1个文本,而不是连续显示2个文本视图:
//fill in the array
timestamp_arr = new ArrayList<String>();
type_arr = new ArrayList<String>();
fillRecord();
Log.d(TAG,"setting now in recordlist");
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,timestamp_arr));
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item2,type_arr));
很明显,它仅连续显示一个textview,因为我将第二个arrayadapter设置为覆盖第一个!我试图为他们使用R.id.text1和R.id.text2,但这给了我一些错误
04-23 01:40:58.658:错误/ AndroidRuntime(3309):android.content.res.Resources $ NotFoundException:资源ID#0x7f070008类型#0x12无效
我相信第二种方法可以实现此目的,但是我不确定如何处理布局问题,因此,如果您有任何建议,请发布出来。谢谢!!
最佳答案
SimpleCursorAdapter
就是这样,很简单。更详尽的要求要求使用不同的适配器。在您的情况下,切换到ResourceCursorAdapter
并覆盖bindView()
。调用view.findViewById(R.id.text1)
,从光标获取数据,进行修改并将文本设置为视图。
在您的情况下,我会避免切换到ArrayAdapter
。例如。您可以轻松地刷新游标适配器,它将消耗更少的资源并可以更好地扩展。