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()。
我将从场景开始,这是一个棘手的场景: 我有一个 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()。