Android - ListView notifyDataSetChanged 在按下按钮时调用 ACTION_CANCEL,我可以避免这种情况吗?

Android - ListView notifyDataSetChanged is calling ACTION_CANCEL on button presses, can I avoid this?

我将从场景开始,这是一个棘手的场景: 我有一个 ListView,每行有一个按钮。这些按钮可以被用户按住。后台线程有可能调用 ListView 上的 notifyDataSetChanged()。这将导致 ACTION_CANCEL 在任何按钮按下时被调用,从而中断用户通过按住按钮进行的​​交互。

我已经尝试了几件事,但我想我已经错过了我的问题的主要原因,即在 notifyDataSetChanged() ACTION_CANCEL 上调用了它的任何子项。

我目前正在使用 BaseAdapter。每当后台线程调用 notifyDataSetChanged() 时,我都需要更新按钮旁边的 TextView,但我不能让它中断按住的按钮。我目前正在尝试手动更新文本字段,但即使在调用 invalidate 时也不会重绘。

如果我找到解决方案,我会post。

想通了!这就是我的选择。我没有调用 notifyDataSetChanged() 而是这样做的。

    int start = list.getFirstVisiblePosition();
    int end = list.getLastVisiblePosition();

    for (int i = start; i <= end; i++) {
        View view = list.getChildAt(i);
        if (view != null) {
            TextView textNotification = (TextView) view.findViewById(R.id.text_notification);
            textNotification.setText("place your text here");
        }
    }

我在这里找到了解决方案:Redraw a single row in a listview。看起来该解决方案也对我有用!如果按住其中一个按钮,我只调用这个新代码,否则我只使用 notifyDataSetChanged()。