Computation on db data then list them using either SimpleCursorAdapter or ArrayAdapter
Posted
by kc2uno
on Stack Overflow
See other posts from Stack Overflow
or by kc2uno
Published on 2010-04-23T05:52:08Z
Indexed on
2010/04/23
5:53 UTC
Read the original article
Hit count: 392
android
Hi all,
I juststarted programming in android a few weeks ago, so I am not entirely sure how to deal with listing values. Please help me out! I have some questions regarding displaying data sets from db in a list. Currently I have a cursor returned by my db points to a list of rows and I want display 2 columns values in a single row of the list. The row xml looks like this:
<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"/>
so I was thinking using simplecursoradapter which supposedly makes my life easier by displaying the data in a list. However that is only true if I want to display the raw data. For the purpose of my program I need to do some computations on the raw data sets, then display them. I am not sure how to do that using SimpleCursorAdapter. Here's how I display the raw data:
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);
Is there a way to do computation on the data in those rows before I bind it with the SimpleCursorAdapter? I was trying to use an alternative way of doing this by using arraylist and arrayadapter, but that way I dont know to how achieve displaying 2 items in a single row.
This is my code for using arrayadapter which only display 1 text in a row instead of 2 textviews in a row:
//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));
It's very obvious that it only displays one textview in a row because I set the second arrayadapter overwrites the first one! I was trying to use R.id.text1 and R.id.text2 for them, but it gave me some errors saying 04-23 01:40:58.658: ERROR/AndroidRuntime(3309): android.content.res.Resources$NotFoundException: Resource ID #0x7f070008 type #0x12 is not valid
I believe the second method can achieve this, but I'm not sure how do deal with the layout problems, so if you any suggestions, please post them out. Thank you!!
© Stack Overflow or respective owner