android - 检测何时从 Android ListView 中删除 View

标签 android android-listview android-view

我有一个自定义类,用作 ListView 中每个项目的 View。当 View 初始化时,它开始每秒更新一次。

我在哪里可以检测到 View 正在被删除,并取消计时器?

编辑:这是 View 的代码。

public class CustomViewCell extends LinearLayout {

    private static final String TAG = "CustomViewCell";

    private ImageView itemImage;
    private TextView itemTitle;
    private TextView itemEstimate;
    private CustomEvent event;
    private Handler mHandler = new Handler();

    public CustomViewCell(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
    }

    @Override
    protected void onFinishInflate() {
        Log.v(TAG, "OnFinishInflate");

        itemImage = (ImageView) findViewById(R.id.itemImage);
        itemTitle = (TextView) findViewById(R.id.itemTitle);
        itemEstimate = (TextView) findViewById(R.id.itemEstimate);

        super.onFinishInflate();
    }

    public void renderWithEvent(CustomEvent event){
        this.event = event;

        String imageURL = event.imageURL();
        if (imageURL != null){
            Picasso.with(getContext()).load(imageURL).into(itemImage);
        }else{
            itemImage.setImageResource(android.R.color.transparent);
        }

        itemTitle.setText(event.title);

        mHandler.removeCallbacksAndMessages(null);
        updateEstimate();
    }

    public void updateEstimate(){
        itemEstimate.setText(event.getEstimate());

        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                updateEstimate();
            }
        }, 1000);
    }

}

这是 ListView 适配器的代码:

private class EventsAdapter extends BaseAdapter {

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            CustomEvent event = (CustomEvent) getItem(position);
            Context context = getActivity();

            CustomViewCell eventItem;
            if (convertView == null){
                eventItem = (CustomViewCell) LayoutInflater.from(context).inflate(R.layout.cell_event, parent, false);
            }else{
                eventItem = (CustomViewCell) convertView;
            }

            eventItem.renderWithEvent(event);

            return eventItem;
        }

        ...
}

最佳答案

我想我明白你在找什么。试试 onDetachedFromWindow()。

关于android - 检测何时从 Android ListView 中删除 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697528/

相关文章:

java - 使用 time4j 获取该月的天数

Android ListView 创建 View 但不显示它们

android - 生成的 ListView 应用程序的 Intent 停止工作

java - Android - 使自定义 View 的透明区域不可点击

java - 如何在 2 秒内不允许用户交互

android - IN 条件仅适用于单值数据存储查询 - Google 应用引擎

android - 微调器适用于 2.3 但不适用于 3.2

android - 可缩放 ListView 不滚动

android - Android版MuPDF : Option for fragment instead Activity

android - getCurrentUser.put() 不更新解析用户对象