几周前我刚刚开始在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。例如。您可以轻松地刷新游标适配器,它将消耗更少的资源并可以更好地扩展。

10-07 12:41
查看更多