so sorry for late reply,

the one that you post is the old one, james..

and, yeah, the problem is still not solved yet,

my only solution is to create new view all the time:

    public View getView(int position, View convertView, ViewGroup
parent) {
        ViewHolder viewHolder;
                convertView = mInflater.inflate(R.layout.list_item,
null);
                viewHolder = new ViewHolder();
                viewHolder.myView = (MyView)
convertView.findViewById(R.id.myview);
                convertView.setTag(viewHolder);
        viewHolder.myView.setText(objects[position]);

        return convertView;
    }

On Sep 8, 3:20 am, jamesc <[email protected]> wrote:
> Hi
>
> Sorry, I think I misunderstand you last post.  Which of the two
> methods is the 'old' one (with the 'random order' problem) and which
> is the 'new' one (where the problem has gone away)?
>
> I would assume that the new/correct version is this one?:
>
>     public View getView(int position, View convertView, ViewGroup
> parent) {
>         ViewHolder viewHolder;
>         if (convertView == null) {
>                 convertView = mInflater.inflate(R.layout.list_item,
> null);
>                 viewHolder = new ViewHolder();
>                 viewHolder.myView = (MyView)
> convertView.findViewById(R.id.myview);
>                 convertView.setTag(viewHolder);
>         } else {
>                 viewHolder = (ViewHolder) convertView.getTag();
>         }
>         viewHolder.myView.setText(objects[position]); // <-- THIS IS
> THE NEW LINE
>
>         return convertView;
>     }
>
> On Sep 8, 4:18 am, "rious.delie" <[email protected]> wrote:
>
> > Okay, great, you are right, james..
>
> > there is something wrong on the getView implementation, still not sure
> > why, but my problem is solved by, something like this:
>
> >     @Override
> >     publicViewgetView(int position,ViewconvertView, ViewGroup
> > parent) {
> >         ViewHolder viewHolder;
> >         if (convertView == null) {
> >                 convertView = mInflater.inflate(R.layout.list_item, null);
> >                 viewHolder = new ViewHolder();
> >                 viewHolder.myView = (MyView)
> > convertView.findViewById(R.id.myview);
> >                 convertView.setTag(viewHolder);
> >         } else {
> >                 viewHolder = (ViewHolder) convertView.getTag();
> >         }
>
> >         viewHolder.myView.setText(objects[position]);
>
> >         return convertView;
> >     }
>
> > changed to:
>
> >     @Override
> >     publicViewgetView(int position,ViewconvertView, ViewGroup
> > parent) {
> >         ViewHolder viewHolder;
> >         if (convertView == null) {
> >                 convertView = mInflater.inflate(R.layout.list_item, null);
> >                 viewHolder = new ViewHolder();
> >                 viewHolder.myView = (MyView)
> > convertView.findViewById(R.id.myview);
> >                 viewHolder.myView.setText(objects[position]);
> >                 convertView.setTag(viewHolder);
> >         } else {
> >                 viewHolder = (ViewHolder) convertView.getTag();
> >         }
>
> >         return convertView;
> >     }
>
> > On Sep 7, 2:03 pm, jamesc <[email protected]> wrote:
>
> > > Hi
>
> > > 1) I'm still not sure why you're doing the measuring yourself (as I'd
> > > use a layout xml file to declare thelistitem'sView, and then
> > > inflate it/set the values in the adapter's getView() call.
> > > 2) I'm guessing that since you are using an adapter and theview
> > > holder, that there's an issue with how your getView() method is
> > > implemented (or perhaps another implementation of an adapter method).
> > > That is, as you know theviewholder allows object reuse; that doesn't
> > > mean to say that the object that you're re-using has the correct
> > > values in it.  It's only there to avoid the expensive inflation/
> > > construction; after that point you're expected to set the values in
> > > that object (for thelistitem) as per the data in the array/list/
> > > structure that is backing the adapter.
>
> > > On Sep 7, 3:55 am, "rious.delie" <[email protected]> wrote:
>
> > > > thank you,
>
> > > > 1) yes, it is anitemon alistview, i populate some numbers of it on
> > > > alistview.
> > > > 2) i need to set the height of theviewon runtime, because the height
> > > > of theviewis the variable of width (height = f(width)),
> > > > it is just as simple as the TextView, which can determine how many
> > > > lines needed to show the text based on a function of display width,
> > > > each font width, and the text to be displayed.
> > > > Yes, i have implemented an adapter (an extends of ArrayAdapter) and
> > > > have used ViewHolder (static class ViewHolder()),
>
> > > > my point is, why bitmap1changesorderrandomlywhilebitmap2 stays
> > > > where it should be,
>
> > > > something like this:
>
> > > > alistview=
>
> > > > view1 = bitmap1 = "hai i am bitmap1 in view1"
> > > >             bitmap2 = "hai i am bitmap2 in view1"
>
> > > > view2 = bitmap1 = "hai i am bitmap1 in view2"
> > > >             bitmap2 = "hai i am bitmap2 in view2"
>
> > > > view3 = bitmap1 = "hai i am bitmap1 in view3"
> > > >             bitmap2 = "hai i am bitmap2 in view3"
>
> > > > view4 = bitmap1 = "hai i am bitmap1 in view4"
> > > >             bitmap2 = "hai i am bitmap2 in view4"
>
> > > > view5 = bitmap1 = "hai i am bitmap1 in view5"
> > > >             bitmap2 = "hai i am bitmap2 in view5"
>
> > > > i scroll fastly, then theorderof bitmap1changes:
>
> > > > view1 = bitmap1 = "hai i am bitmap1 in view4"
> > > >             bitmap2 = "hai i am bitmap2 in view1"
>
> > > > view2 = bitmap1 = "hai i am bitmap1 in view5"
> > > >             bitmap2 = "hai i am bitmap2 in view2"
>
> > > > view3 = bitmap1 = "hai i am bitmap1 in view2"
> > > >             bitmap2 = "hai i am bitmap2 in view3"
>
> > > > view4 = bitmap1 = "hai i am bitmap1 in view1"
> > > >             bitmap2 = "hai i am bitmap2 in view4"
>
> > > > view5 = bitmap1 = "hai i am bitmap1 in view3"
> > > >             bitmap2 = "hai i am bitmap2 in view5"
>
> > > > moreover, theorderrandomchangesappearwhilei scroll thelistview
> > > > fastly, if i gently scroll it slowly the problem is not occured, it
> > > > seems that the problem is not on the code, (is it a bug on android
> > > > platform?)
>
> > > > On Sep 6, 2:17 pm, jamesc <[email protected]> wrote:
>
> > > > > OK.  I've had a quick look.
>
> > > > > 1) I take it that yourView(MyView) is theitemin theListView?
> > > > > 2) Why are you doing the measuring (and implementing onDraw())?  I
> > > > > would have thought that you should be using a layout to declare the
> > > > >ListViewitemand then backing that with a BaseAdapter implementation
> > > > > (where you should look at using the "viewholder" pattern to allow re-
> > > > > use of inflated objects.
>
> > > > > On Sep 6, 5:15 am, "rious.delie" <[email protected]> wrote:
>
> > > > > > somebody please...

-- 
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