【发布时间】:2014-06-13 00:03:58
【问题描述】:
我有一个ListView,其中包含一些列表项。每个项目都有一个删除按钮,它可以激活列表项顶部的另一层,以显示已删除的文本,如删除@987654322 中所示@在下面的代码中。
这些激活的overlays 经常重复自己(就像每8 个列表项一样),所以我猜android 是recycling 他们不知何故......
我怎样才能使这个问题不再发生?
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;
}
列表项是FrameLayout,顶部是删除的图层(默认不可见),下面是有关该项目的信息。
【问题讨论】: