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 <[email protected]> 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 [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