Thx for the help.

I was trying something like the code snippet below but it doesn't
help... It seems that the TextView retrieved in the else case is
always null, any ideas?

            } else {
                Log.d(LOG_TAG, "No need for row to be created");
                Log.d(LOG_TAG, "Finding the TextView for the label-
name");
                TextView textView = (TextView)
row.findViewById(R.id.labelname);
                if(textView != null) {
                    Log.d(LOG_TAG, "TextView for label-name found");
                    Log.d(LOG_TAG, "Setting the name of the
label...");
                    textView.setText(label.getName());
                    ImageView deleteButton = (ImageView)
row.findViewById(R.id.btn_delete);
                    Log.d(LOG_TAG, "About to attach the
onClickListener for deletion of the label");
                    deleteButton.setOnClickListener(new
View.OnClickListener() {
                        public void onClick(View view) {
                            deleteLabel(label, true);
                        }
                    });
                }
            }

On Feb 6, 5:45 pm, Kostya Vasilyev <kmans...@gmail.com> wrote:
> Dirk,
>
> You have a bug in your getView() method.
>
> When a list item layout gets recycled (convertView != null), your code
> correctly avoids re-inflating a new layout. However, since the item
> layout is being recycled, it's also necessary to update its views with
> values for the current item.
>
> Pseudo-code:
>
> getView() {
>
> if (convertView == null) {
> inflate a view
>
> }
>
> /* Always execute below code, for both new and recycled item layouts */
>
> YourDataItem item = get data item specified by "position"
>
> TextView view1.setText(item.name);
> TextView view2.setText(item.address);
> // etc
>
> }
>
> -- Kostya
>
> 06.02.2011 19:39, Dirk Vranckaert пишет:
>
>
>
>
>
>
>
>
>
> > 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;
> >          }
> >      }
>
> --
> Kostya Vasilyev -- WiFi Manager + pretty widget 
> --http://kmansoft.wordpress.com

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