Richard,
To keep it simple, I would recommend:
1. Override bindChildView and set your floating point value "manually".
You can get the value from the cursor, call findViewById() on the view
that's passed it to get the TextView that should show the value, format
the value as a string, and then call
amountTextTiew.setText(formattedAmountValueString);
2. Call the base class bindChildView from your own to take care of all
the other data items / views except the floating point one.
3. Pass from/to arrays to SimpleCursorTreeAdapter that have all data
item / view IDs - except the floating point amount data item, which is
handled by pt. 1.
With this, you won't need to do too much work in your overrides, won't
need to copy and modify any code from Android, won't need access to
private data members of SimpleCursorTreeAdapter, and won't need to rely
on ViewBinder that only appeared in API level 5:
http://developer.android.com/reference/android/widget/SimpleCursorTreeAdapter.ViewBinder.html
-- Kostya
PS - I find it very useful to have Android framework source code in
Eclipse. Instead of hunting through the source code repository, it lets
me open source code by class name, by pressing Ctrl+Shift+T.
11.02.2011 12:38, Richard Marsh пишет:
Kostya,
Thank you SO much for taking the time to reply. I guess the next
rookie question would be: "Do I get the source code for the
SimpleCursorTreeAdapter and modify it to build my own"
I was playing around with that idea and when I tried to overwrite the
method below, my custom adapter didn't recognize the variables
mChildFrom and mChildTo. I assumed that with apis after level 4 had
changed the parent classes that define and assign those arrays.
@Override
protected void bindChildView(View view, Context context, Cursor
cursor, boolean isLastChild) {
bindView(view, context, cursor, mChildFrom, mChildTo);
}
I'm ok with the idea of building my own adapter from the "base"
adapters. I'm just not sure how to access the source code, what is
derived from the parent classes etc. I'm sorry if these questions
seems stupid, but I've only been at this for about a month.
Alos, if I look at the documentation here
http://developer.android.com/reference/android/widget/SimpleCursorTreeAdapter.html
and filter it on API level 4, I don't see a bindView method. Is the
method inherited?
One last question, to be clear on your suggestion, is that I override
the bindChildView and bindGroupView methods?
Again, thank you for replying.
On Fri, Feb 11, 2011 at 11:26 AM, Kostya Vasilyev <[email protected]
<mailto:[email protected]>> wrote:
Richard,
Adapter view binders are only a convenience feature, and you can
always skip to the real stuff.
SimpleCursorTreeAdapter has this private method where mViewBinder
is used:
private void bindView(View view, Context context, Cursor cursor,
int[] from, int[] to) {
ViewBinder binder = mViewBinder;
for (int i = 0; i < to.length; i++) {
if (binder != null) {
bound = binder.setViewValue(v, cursor, from[i]);
}
... default case for when there is no binder ...
}
}
This method is called from public, API level 1, override-able SDK
methods:
@Override
protected void bindChildView(View view, Context context, Cursor
cursor, boolean isLastChild) {
bindView(view, context, cursor, mChildFrom, mChildTo);
}
@Override
protected void bindGroupView(View view, Context context, Cursor
cursor, boolean isExpanded) {
bindView(view, context, cursor, mGroupFrom, mGroupTo);
}
So - override bindChildView / bindGroupView to format and set the
values any way you like. You can even make your own MyBinder class
and follow the general structure as above.
Also, if you're not using automatic view binding, your might as
well derive your adapter from ResourceCursorTreeAdapter.
In general, my impression of Simple*Adapter classes is that they
are like bicycles for small children (those with little wheels on
the sides) - not a bad way to start, but you outgrow them pretty
quickly.
-- Kostya
11.02.2011 11:41, Richard Marsh пишет:
Hi everyone
I've been stuck on this issue for a couple of days now and I
think I'm close to murder, so any help would be greatly
appreciated.
First just a little context.
I have a db with a Budget and Category tables. The fields are
_id ,CategoryID, Item and Amount. The amount is stored as a
double. I've written my own db adapters and they are working
no problem. So with lots of reading and searching I finally
get my ExpandablListView to populate using my slightly
modified SimpleCursorTreeAdapter. My custom adapter just
changes the GetChildrenCursor to return the children
associated with each category.
Now here's the problem:
The amount value is shown in the list and I would like to
format how the value is displayed into a local currency. The
formatting isn't the issue. The issue is that I can use a
ViewBinder but only if I use API level 5 and up. But I want to
use API level 4 and up.
So how do I change the way the data is displayed in my list
items, without having to use a viewbinder... or at least,
working withing the API 4 framework.
ANY advice or ideas would be appreciated!
Kind regards --
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>
To unsubscribe from this group, send email to
[email protected]
<mailto:android-developers%[email protected]>
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--
Kostya Vasilyev -- WiFi Manager + pretty widget --
http://kmansoft.wordpress.com
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>
To unsubscribe from this group, send email to
[email protected]
<mailto:android-developers%[email protected]>
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--
Kostya Vasilyev -- WiFi Manager + pretty widget -- http://kmansoft.wordpress.com
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en