Sample
application using Single-pane and Multi-pane Layouts with ExpandableListView
using CursorTreeAdapter with in fragment, Content Provider, LoaderCallbacks
& CursorLoader.
MULTI-PANE
LAYOUTS
On
a tablet, you want to take advantage of all the space. Get rid of line lengths
that stretch the whole screen. Multi-pane layouts allow you to resolve than.
Panes should represent content in an ordered manner; from left-to-right...
content becomes more detailed.
Rule is to
maintain functional parity in all screen orientations. We have a few strategies
to solve this. You can use all or some. You can either: stretch, stack,
expand/collapse, or show/ hide different UI panes, depending on the screen
orientation. Some figures demonstrate these designs.
Implementation
should be done with Fragments. A fragment is "a fragment of an
activity". It's a unit that can be reused across activities. It's
something smaller than an activity that shares lifecycle patterns, but is
focused on a sub-layout that's separated in your codebase.
Ref: AndroidUIs
Figure: Implementing Android UI's for Handset and Tablets
On a tablet-sized
screen, the Activity A layout contains both Fragment A and Fragment B.
On a handset-sized
screen, the Activity A layout contains only Fragment A (the list view). In
order to show the details in Fragment B, Activity B must open.
In Expandable List,
Child Query is fetched from CursorLoader, We may get doubt, Why we should go for
Cursor Loader and what are their adv.?
A CursorLoader automatically re-runs the query when
data associated with the query changes. It runs an asynchronous query in the
background against a ContentProvider,
and returns the results to the Activity or FragmentActivity from which it was called. This allows
the Activity or FragmentActivity to continue to interact with the user
while the query is ongoing.
Loading Data in the Background
Querying a
ContentProvider
for
data you want to display takes time. If you run the query directly from an Activity
, it may get
blocked and cause the system to issue an "Application Not Responding"
message. Even if it doesn't, users will see an annoying delay in the UI. To
avoid these problems, you should initiate a query on a separate thread, wait
for it to finish, and then display the results.
You can do this in a straightforward way by using an
object that runs a query asynchronously in the background and reconnects to
your
Activity
when
it's finished. This object is aCursorLoader
.
Besides doing the initial background query, aCursorLoader
automatically
re-runs the query when data associated with the query changes.
This class describes how to use a
CursorLoader
to
run a background query. Examples in this class use the v4 Support Library versions of classes, which support
platforms starting with Android 1.6.
Running
a Query with a CursorLoader
A
CursorLoader
runs
an asynchronous query in the background against a ContentProvider
, and returns the results to the Activity
or FragmentActivity
from
which it was called.
Ref link: load-data-background
Source Code: Here
Thanks for reading :)
If you have any other quick thoughts/hints that you think people will find useful, feel free to leave a comment.
Very Nice Post, it helped a lot and it worked by himself, but im trying to implement the expandablelistview in only one fragment, in a proyect with 3 fragments, i mean, i want all of this, but only in one part of my app, i cant transpase this from the main activity to my fragment1.java
ReplyDeleteLovely blog! I want to share it with my friends and family. You have a great ability of holding reader’s mind. It is something rare which cannot be given to everybody by god. Stay with it Keep up your mind blowing work. :) I trust you will go on with your works this way. I just couldn't run off your blog without telling to you that I really enjoyed the best quality post you present to your readers.
ReplyDelete