几周前我刚刚开始在android中编程,所以我不完全确定如何处理列表值。请帮帮我! 我有一些关于在列表中显示数据集的问题。目前我有一个由我的db返回的光标指向行列表,我希望在列表的单行中显示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:ERROR / AndroidRuntime(3309):android.content.res.Resources $ NotFoundException:资源ID#0x7f070008类型#0x12无效
我相信第二种方法可以实现这一点,但我不确定如何处理布局问题,所以如果您有任何建议,请将它们发布出去。谢谢!!
答案 0 :(得分:0)
SimpleCursorAdapter
就是这样,简单。更复杂的要求需要不同的适配器。在您的情况下,切换到ResourceCursorAdapter
并覆盖bindView()
。调用view.findViewById(R.id.text1)
,从光标中获取数据,进行修改并将文本设置为视图。
我会避免在您的情况下切换到ArrayAdapter
。例如。您可以轻松刷新游标适配器,它将消耗更少的资源并更好地扩展。