I update the tag on the button after the else and it works. Thanks
TreKing :)

On Apr 9, 1:31 pm, Agus <[email protected]> wrote:
> You are using convertView object which is a recycled view.
>
>
>
> On Thu, Apr 8, 2010 at 2:42 AM, Binesy <[email protected]> wrote:
> > Hi,
>
> > I have been having some strange behavior when refreshing a listview
> > from a button in a list item.  Say you have a list of 4 items, indexes
> > 0-3 and you click on item 4, and print the index.  3 is printed
> > correctly, then i refresh the list.  I click on item 4 again, but this
> > time index 0 is printed, click again and we are back to 3.  Why is
> > this happening and how can I fix it?
>
> > I have included some source below for you to have a look at how I have
> > done this.  Any help is much appreciated
>
> > Binesy
>
> > public class CrazyList extends Activity {
>
> >        private static final String TAG = "CRAZY LIST";
>
> >        public class Item {
> >                public String name = null;
> >                public int counter = -1;
>
> >                public Item(String n) {
> >                        name = n;
> >                        counter = 0;
> >                }
> >        }
>
> >        private ArrayList<Item> names = null;
> >        private MyAdapter adapter = null;
>
> >   �...@override
> >    public void onCreate(Bundle savedInstanceState) {
> >        super.onCreate(savedInstanceState);
> >        setContentView(R.layout.main);
>
> >        names = new ArrayList<Item>();
> >        names.add(new Item("Ross"));
> >        names.add(new Item("Fred"));
> >        names.add(new Item("Bob"));
> >        names.add(new Item("Frank"));
>
> >        ListView list = (ListView)findViewById(R.id.ListView01);
> >        adapter = new MyAdapter();
> >        list.setAdapter(adapter);
> >    }
>
> >    private void updateButtonText(int index) {
> >        names.get(index).counter++;
> >        adapter.notifyDataSetChanged();
> >    }
>
> >    private class MyAdapter extends BaseAdapter {
>
> >               �...@override
> >                public int getCount() {
> >                        return names.size();
> >                }
>
> >               �...@override
> >                public Object getItem(int position) {
> >                        return names.get(position);
> >                }
>
> >               �...@override
> >                public long getItemId(int position) {
> >                        return position;
> >                }
>
> >               �...@override
> >                public View getView(int position, View convertView,
> > ViewGroup
> > parent) {
> >                        Container c = null;
>
> >                        if(convertView == null) {
> >                                convertView =
> > View.inflate(getApplicationContext(), R.layout.item,
> > null);
> >                                c = new Container();
>
> >                                c.text = (TextView)
> > convertView.findViewById(R.id.TextView01);
> >                                c.button = (Button)
> > convertView.findViewById(R.id.Button01);
> >                                c.button.setTag(position);
>
> >                                c.button.setOnClickListener(new
> > OnClickListener() {
>
> >                                       �...@override
> >                                        public void onClick(View v) {
> >                                                int number =
> > (Integer)v.getTag();
> >                                                Log.d(TAG, "Button clicked
> > is " + number);
> >                                                updateButtonText(number);
> >                                        }
> >                                });
>
> >                                convertView.setTag(c);
> >                        }
> >                        else
> >                                c = (Container) convertView.getTag();
>
> >                        c.text.setText(names.get(position).name);
> >                        c.button.setText(names.get(position).counter + "");
>
> >                        return convertView;
> >                }
>
> >                public class Container {
> >                        public TextView text = null;
> >                        public Button button = null;
> >                 }
> >    }
> > }
>
> > --
> > 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]<android-developers%2Bunsubs 
> > [email protected]>
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
>
> > To unsubscribe, reply using "remove me" as the subject.

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