Вы находитесь на странице: 1из 4



c  Introduction
2  out list adapters with sections (to group elements in the lists)
3  out lists containing some actions (list elements do something complex or change
themselves when selected)
4  out list views manual invalidation
5  out caching images in    (for lists with remote images)
6  out adapters that iterate over cursors (to support pagination in lists)
7  out Outh autorization in ndroid
8  out using 0  
 to play remote video received using HTTP
9  out queues containing several a
s (to execute ackground tasks sequentially)
c out changing the list element selection style
cc out adding Quickctions to your project
c2 Three more mini-solutions


ast summer I had ignited the desire to write an ndroid client for vimeo we-service I like this
service and I think it would e cool to monitor updates on video suscriptions from your

I ɫonceived this project to e learning one (means I am learning), however as a result I¶ve found
that a valuale part was done (you can check out screenshots of the finished things), ut it is still
in progress lmost simultaneously with me, eing first, makotosan started to write his own
version of client aimed at video upload and he is also has not finished it yet, ut his version can
do things that my version can not (and converse is also true, seems)

nyway, through programming process I¶ve got some knowledge ase which I want to share
Not all the themes are exclusive ut some tricks are hidden in the we or even not covered there
        (: some achors point to concrete lines in code)


mong with the regular    usage, it is frequently required to make a list with elements
grouped in sections like this: section header, item, item, item, «, section header, item, item,
item, «, section header, item, item, «, section header, item, item, « & s o See ³Statistics´ and
³Information´ sections at the image
Headers must not react on selection or press and they must have their own layout This may e
accomplished extending the adapter of this list from  a , for example, and y
overriding its  
  and    methods, among with

     a   a 

^ *xample from vimeoid:    a   a

The first step is creating a constants which identify element type, one for header, one for item (so
there is a possiility to have more than two types, ut it¶s etter to use   to store idenitifiers
in cases like those):

     0   !"#$$ 

     %&   !'#$$   

Then a constant containing a numer of element types (there¶s two in our case):

        %(&!%&   )'#

dapter must contain the information aout all of the elements inside, so the  , 
and  realizations are depend on your situation

 method must return the constant that conforms with the element type in the
passed position There is a special constant named *&%+ 0    exist in a
class for the case when type is undefined


,    -
 ,-  0   #
 ,-  %&   #
  *&%+ 0   #

I my case I store the list of sections inside the adapter and they contain their items inside So I
can ask any section to tell me how many items it holds inside and to determine the element type
using this data

This method can e used in overriden   now:

   ,    /   0  / *   -
,   -#
!!*&%+ 0   -1  
     ,23 4    2)   -#
!!%&   -
  0  !551 
.  ,0 
!!0   -
  0  !551 
    0  #

   must return   for elements that can not e pressed or selected and   for
others Here we can use  

      ,    -

,   -6!%&   .#

  method returns the very constant determing a numer of elements types:


 ,-     %(&#.

By the way, you can keep a pointer to 

   in your adapter and get it passed using

It is all the required things to make a list with sections, if you need to ensure in something - just
look into example, ut I¶ll make some notices efore
I use separate structures to store the data aout sections and items The section identifier, its title
and child items structures are stored within the section structure  pointer to parent section
structure, item title, icon path and click handler (it will e covered in next paragraph) are stored
within the item structure Both structures¶ constructors are accessile only from adapters:

^ *xample from vimeoid: a   

I simplified adding sections and items to list using this way dapter has methods:

     ,   -#

 a   ,    /   /   -#

Method    returns the section identifier so you can use it to add items in this section:

       !    ,2 2-#

 ,    /+  1 /27 2-#
 ,    /+    /28  2-#
 ,    /+  /22-#
 ,    /+   /2 2-#
        !    ,23  2-#
 ,     /+   /29 2-#
 ,     /+  : /2; 2-#