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

