I have a ListView
with some list items in. Each item has a delete button, which activates another layer on top of the list item to appear with the text that it has been deleted, as see in the delete onClickListener
in the following code.
These activated overlays
repeat themselves every so often (like every 8 list items), so I guess android is recycling
them somehow...
How can I make it so that this problem doesn't happen anymore?
public View getView(int i, View view, ViewGroup viewGroup) {
final AnnouncementHolderItem holder;
final View finalView = view;
Item curr = getItem(i);
if(view == null){
LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_item, null);
holder = new HolderItem(view);
view.setTag(holder);
} else {
holder = (HolderItem) view.getTag();
}
holder.title.setText(curr.getTitle());
holder.course.setText(curr.getName());
holder.marker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, "Item starred!", Toast.LENGTH_SHORT).show();
}
});
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((LinearLayout) finalView.findViewById(R.id.bottomLayer)).setVisibility(View.INVISIBLE);
LinearLayout delete = (LinearLayout)finalView.findViewById(R.id.deleteLayer);
delete.setVisibility(View.VISIBLE);
}
});
holder.undelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Reverse of the delete + a toast message
}
});
return finalView;
}
And the list item is a FrameLayout
, with the deleted layer on top (default invisible) and the info about the item below it.