Hi all,

I'm having an issue with the ListView in Android.

So I have an activity extending the ListActivity, in the activity I
have an innerclass for my adapater.
Now both on my device and the emulator some entries appear 2 or 3
times in the list (not always the same items) although the size of my
List<Label> is always the same!

On the emulator I noticed that it's mostly related to the scrolling in
the list... If I scroll down some entries are duplicate, if I scroll
up and down again the entries have changed all over the list...

Is there anything in my code that you guys can see that is wrong?

Here's my code:

        ....
        this.labels = labelService.findAll();
        Collections.sort(this.labels, new LabelByNameComparator());
        Log.d(LOG_TAG, labels.size() + " labels loaded!");
        ManageLabelsListAdapter adapter = new
ManageLabelsListAdapter(labels);
        adapter.notifyDataSetChanged();
        setListAdapter(adapter);

    /**
     * The list adapater private inner-class used to display the
manage labels list.
     */
    private class ManageLabelsListAdapter extends ArrayAdapter<Label>
{
        private final String LOG_TAG =
ManageLabelsListAdapter.class.getSimpleName();
        /**
         * {@inheritDoc}
         */
        public ManageLabelsListAdapter(List<Label> labels) {
            super(ManageLabelsActivity.this,
R.layout.list_item_labels, labels);
            Log.d(LOG_TAG, "Creating the manage labels list
adapater");
        }

        @Override
        public View getView(int position, View convertView, ViewGroup
parent) {
            Log.d(LOG_TAG, "Getting view...");
            View row = convertView;
            ManageLabelsListWrapper wrapper;

            if(row == null) {
                Log.d(LOG_TAG, "Row needs to be created!");
                final Label label = labels.get(position);
                Log.d(LOG_TAG, "Label at list position " + position +
" retrieved from DB list: " + label);

                LayoutInflater inflater = getLayoutInflater();
                row = inflater.inflate(R.layout.list_item_labels,
parent, false);
                Log.d(LOG_TAG, "Label row inflated into layout!");
                wrapper = new ManageLabelsListWrapper(row);
                Log.d(LOG_TAG, "Row wrapped!");

                TextView labelName = wrapper.getLabelname_listitem();
                Log.d(LOG_TAG, "About to update the name of the label
in the view for TextView " + labelName + " with the value: " +
label.getName());
                labelName.setText(label.getName());

                ImageView deleteButton = wrapper.getBtn_delete();
                deleteButton.setOnClickListener(new
View.OnClickListener() {
                    public void onClick(View view) {
                        deleteLabel(label, true);
                    }
                });
            }

            return row;
        }
    }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to