Extend the GridView or write my own class which will manipulating 100
cells as drawables?

On 29 апр, 00:27, Streets Of Boston <[email protected]> wrote:
> I have to defend Romain here.
> The gridview and/or listview is just not designed to do this. You're
> trying to put a round peg in a square hole.
>
> Maybe the decision to use a GridView for your purposes is not a good
> idea, because of its design that does not fit what you need.
>
> If all 100 cells are visible at the same time (then there's no
> scrolling needed), why do you need a gridview? Maybe you should
> subclass your own view and draw the 100 cells as 100 drawables (which
> you can animate) yourself in its onDraw or dispatchDraw method.
>
> On Apr 28, 2:53 pm, Illidane <[email protected]> wrote:
>
>
>
> > Ok-ok, I gotcha what you mean.
> > But with such position to developers you will never make android lead
> > platform.
> > Sory, if I speak the truth boldly.
>
> > On 28 апр, 19:44, Romain Guy <[email protected]> wrote:
>
> > > No, you are just making assumptions about how it should work. Nowhere
> > > does it say that it should work the way you want it to work, that's
> > > not how it works and that's not how it will work.
>
> > > 2009/4/28 Illidane <[email protected]>:
>
> > > > To Romain Guy:
> > > > Ok, I understood that you think that it's NOT a bug and that you
> > > > implement it how you want it be.
> > > > But I need to say you, that in such situation is very hard, or
> > > > sometimes is impossible to write good, stable, beauty, useful and
> > > > competitive apps for Android, not only for me, but for all Android
> > > > programmers.
> > > > And I think you know that.
>
> > > > On 28 апр, 18:53, Romain Guy <[email protected]> wrote:
> > > >> I am from the Google team (and I did implement a lot of GridView and
> > > >> ListView) and it is NOT a bug. GridView and ListView can call
> > > >> getView() out of order and more times than the number of views that
> > > >> will fit on screen, depending how the Grid/ListView is measured/laid
> > > >> out.
>
> > > >> 2009/4/28 [email protected] <[email protected]>:
>
> > > >> > I have exactly same problem. Why do we have 102 values of position
> > > >> > when there is only 100 cells displayed on screen?
> > > >> > "position is changed like: 0, 0, 1, 2, 3... 99, 0" - what is the 
> > > >> > cause
> > > >> > of that? Can someone from google team answer?
> > > >> > That seems to be a bug, very annoying bug. Answer "It's not a bug" is
> > > >> > not answer! How do you generate position?
>
> > > >> > On Apr 27, 9:40 pm, Illidane <[email protected]> wrote:
> > > >> >> There is a way to make GridView without Adapter ( e.g. something
> > > >> >> like .addView() method ) ?
>
> > > >> >> On 27 апр, 21:38, Illidane <[email protected]> wrote:
>
> > > >> >> > My GridView shows all 100 cells on the screen ( all visible at one
> > > >> >> > moment )
> > > >> >> > and all the animation works fine, and pretty fast ( on all 100
> > > >> >> > elements ),
> > > >> >> > but than begin problems with last cell.
> > > >> >> > Animation not child-view's. Each cell is a imageView with 
> > > >> >> > animation on
> > > >> >> > it.
>
> > > >> >> > On 27 апр, 20:43, Streets Of Boston <[email protected]> 
> > > >> >> > wrote:
>
> > > >> >> > > It's not buggy. I use the adapters and grid/list-views in my 
> > > >> >> > > apps and
> > > >> >> > > they work fine. I think they are not designed for your purpose.
>
> > > >> >> > > e.g. If your adapter has 100 elements and the grid/list-view 
> > > >> >> > > only
> > > >> >> > > shows about 15 at a time on the screen, the getView is called 
> > > >> >> > > about 15
> > > >> >> > > times. Sometimes more times, depending whether a little bit (a 
> > > >> >> > > few
> > > >> >> > > pixels) of the top or bottom child-view become visible or not. 
> > > >> >> > > Then,
> > > >> >> > > when you start scrolling, getView gets called again and again 
> > > >> >> > > when
> > > >> >> > > child-views become visible and others become invisible.
>
> > > >> >> > > Also, seriously consider re-using the convertView for your 
> > > >> >> > > grid- or
> > > >> >> > > list-view. My experience is that it can really slow down your 
> > > >> >> > > app if
> > > >> >> > > you just return new View instances for each child-view/cell:
> > > >> >> > > public ... getView(....) {
> > > >> >> > >   View view = convertView != null ? convertView : 
> > > >> >> > > createNewView(...);
> > > >> >> > >   ...
> > > >> >> > >   ...
> > > >> >> > >   return view;
>
> > > >> >> > > }
>
> > > >> >> > > The implementation of the adapter+listviews does not need to 
> > > >> >> > > rely on
> > > >> >> > > the order in which the getView is called. As long as it is 
> > > >> >> > > called for
> > > >> >> > > every child-view that becomes visible.
>
> > > >> >> > > Isn't is possible to start a child-view's (cell's) animation 
> > > >> >> > > when you
> > > >> >> > > handle it the getView(...) method?
>
> > > >> >> > > If you really want at least 100 child-views/cells to be created 
> > > >> >> > > (i
> > > >> >> > > won't recommend it... it's a LOT), you can override the 
> > > >> >> > > Adapter's
> > > >> >> > > getViewTypeCount() and getItemViewType(int pos). Even with 
> > > >> >> > > this, I'm
> > > >> >> > > still not sure if getView would get called in the order you 
> > > >> >> > > want.
>
> > > >> >> > > ...
> > > >> >> > >   private static int EXPECTED_CELL_COUNT = 100;
>
> > > >> >> > >   public int getViewTypeCount() { return EXPECTED_CELL_COUNT; }
> > > >> >> > >   public int getItemViewType(int pos) { return pos %
> > > >> >> > > EXPECTED_CELL_COUNT; }
>
> > > >> >> > > On Apr 27, 1:07 pm, Illidane <[email protected]> wrote:
>
> > > >> >> > > > And you think it's not a bug? where is guarantee that it will 
> > > >> >> > > > work in
> > > >> >> > > > general?
> > > >> >> > > > Where adapter takes it's magic number N?
>
> > > >> >> > > > On 27 апр, 19:56, Romain Guy <[email protected]> wrote:
>
> > > >> >> > > > > There is no guarantee it's going to be called N times 
> > > >> >> > > > > either.
>
> > > >> >> > > > > 2009/4/27 Illidane <[email protected]>:
>
> > > >> >> > > > > > Even with convertView problem is still same - last cell 
> > > >> >> > > > > > is not
> > > >> >> > > > > > animating.
> > > >> >> > > > > > And... you said WHEN getView()... I think it's no matter, 
> > > >> >> > > > > > matter HOW
> > > >> >> > > > > > MANY times getView() called.
> > > >> >> > > > > > It calls more than 100 times, whats very strange.
> > > >> >> > > > > > For the first time it's called 102 times and all 
> > > >> >> > > > > > animations was
> > > >> >> > > > > > working. For the second and next times it was 101, and 
> > > >> >> > > > > > last animation
> > > >> >> > > > > > was static.
> > > >> >> > > > > > I think where is some bug regularity...
>
> > > >> >> > > > > > On 27 апр, 19:31, Romain Guy <[email protected]> wrote:
> > > >> >> > > > > >> You should ALWAYS reuse the convertView, oherwise you're 
> > > >> >> > > > > >> gonna eat up
> > > >> >> > > > > >> memory and just slow down your app. And like I said, 
> > > >> >> > > > > >> there is no
> > > >> >> > > > > >> guarantee on how and when getView() is called so you 
> > > >> >> > > > > >> cannot rely on it
> > > >> >> > > > > >> with your anim counter.
>
> > > >> >> > > > > >> 2009/4/27 Illidane <[email protected]>:
>
> > > >> >> > > > > >> > I dont use convertView parametr and return new 
> > > >> >> > > > > >> > child-view.
>
> > > >> >> > > > > >> > Each cell has an animation. In the getView I generate 
> > > >> >> > > > > >> > an array of
> > > >> >> > > > > >> > animations, wich I start when the adapter stops his 
> > > >> >> > > > > >> > work ( e.g. when
> > > >> >> > > > > >> > my mAnimCounter == 102 ( but need be max 100, lol ) 
> > > >> >> > > > > >> > When I run app,
> > > >> >> > > > > >> > all 100 cells are animated. But when I re-check the 
> > > >> >> > > > > >> > field as I need
> > > >> >> > > > > >> > and call mGameGrid.setAdapter(mAdapter), new 
> > > >> >> > > > > >> > animations working, but
> > > >> >> > > > > >> > last. Last cell are NOT animated. Problem can be only 
> > > >> >> > > > > >> > in getView and
> > > >> >> > > > > >> > method how it works. I very doubt that it's not a bug 
> > > >> >> > > > > >> > of GridView or
> > > >> >> > > > > >> > Adapter.
>
> > > >> >> > > > > >> > On 27 апр, 18:59, Streets Of Boston 
> > > >> >> > > > > >> > <[email protected]> wrote:
> > > >> >> > > > > >> >> The child/item-views in list-views and grid-views are 
> > > >> >> > > > > >> >> re-used
> > > >> >> > > > > >> >> (convertView input parameter). I suspect that 
> > > >> >> > > > > >> >> depending on the layout/
> > > >> >> > > > > >> >> measurements/visibility of the child-views and the 
> > > >> >> > > > > >> >> way you implement
> > > >> >> > > > > >> >> getView (re-using convertView or ignoring it and 
> > > >> >> > > > > >> >> returning a brand-new
> > > >> >> > > > > >> >> child-view every time), the order in which these 
> > > >> >> > > > > >> >> child-views are
> > > >> >> > > > > >> >> called (value of 'position' parameter in the getView 
> > > >> >> > > > > >> >> method) can be
> > > >> >> > > > > >> >> random.
>
> > > >> >> > > > > >> >> On Apr 27, 11:30 am, Illidane <[email protected]> 
> > > >> >> > > > > >> >> wrote:
>
> > > >> >> > > > > >> >> > Why number of getView calls is different??
> > > >> >> > > > > >> >> > One time it's 102 ( but need to be 100 ) and the 
> > > >> >> > > > > >> >> > second and greater is
> > > >> >> > > > > >> >> > 101.
>
> > > >> >> > > > > >> >> > On 27 апр, 18:15, Romain Guy <[email protected]> 
> > > >> >> > > > > >> >> > wrote:
>
> > > >> >> > > > > >> >> > > It's not a bug. There's no guarantee in the order 
> > > >> >> > > > > >> >> > > of the calls wrt to
> > > >> >> > > > > >> >> > > the position value. It also depends on how the 
> > > >> >> > > > > >> >> > > GridView is
> > > >> >> > > > > >> >> > > measured/laid out.
>
> > > >> >> > > > > >> >> > > On Mon, Apr 27, 2009 at 6:38 AM, Illidane 
> > > >> >> > > > > >> >> > > <[email protected]> wrote:
>
> > > >> >> > > > > >> >> > > > Hi,
> > > >> >> > > > > >> >> > > > I'm using GridView in my app, and myAdapter ( 
> > > >> >> > > > > >> >> > > > extends BaseAdapter) for
> > > >> >> > > > > >> >> > > > it. I have overrited method getView(int 
> > > >> >> > > > > >> >> > > > position, View convertView,
> > > >> >> > > > > >> >> > > > ViewGroup parent) of Adapter and 100 cells in 
> > > >> >> > > > > >> >> > > > GridView.
>
> > > >> >> > > > > >> >> > > > If I set logger:
> > > >> >> > > > > >> >> > > > android.util.Log.w("bla", (new 
> > > >> >> > > > > >> >> > > > StringBuilder()).append
> > > >> >> > > > > >> >> > > > (position).toString()); where is in the getView 
> > > >> >> > > > > >> >> > > > then I'll see that
> > > >> >> > > > > >> >> > > > position is changed like: 0, 0, 1, 2, 3... 99, 
> > > >> >> > > > > >> >> > > > 0. -WTF? ( thats for
> > > >> >> > > > > >> >> > > > the first time) and then I call 
> > > >> >> > > > > >> >> > > > mGameGrid.setAdapter(mAdapter) and
> > > >> >> > > > > >> >> > > > position is going: 0, 0, 1, 2, 3...99.
> > > >> >> > > > > >> >> > > > I think it's a bug of BaseAdapter, isn't it?
>
> > > >> >> > > > > >> >> > > --
> > > >> >> > > > > >> >> > > Romain Guy
> > > >> >> > > > > >> >> > > Android framework engineer
> > > >> >> > > > > >> >> > > [email protected]
>
> > > >> >> > > > > >> >> > > Note:
>
> ...
>
> продолжение >>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to