- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
首先,我为此工作了一整天,但一事无成。我有一个 RecyclerView
和一个使用 RecyclerView
的 SortedList
的适配器。我尝试使用回调类实现 TouchHelper
:
public class TimerListTouchHelperCallback extends ItemTouchHelper.SimpleCallback {
private OnItemChangeListener onItemChangeListener;
public TimerListTouchHelperCallback(OnItemChangeListener listener, int dragDirs, int swipeDirs) {
super(dragDirs, swipeDirs);
this.onItemChangeListener = listener;
}
@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
TimerHolder holder = (TimerHolder) viewHolder;
int holderState = holder.getState();
if (holderState == TimerHolder.TIMER_PENDING_DELETE) return 0;
else return super.getSwipeDirs(recyclerView, viewHolder);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
TimerHolder holder = (TimerHolder) viewHolder;
int position = holder.getAdapterPosition();
// ViewHolder's state is changed that should handle the layout change.
holder.setState(TimerHolder.TIMER_PENDING_DELETE);
if (onItemChangeListener != null) onItemChangeListener.onItemSwiped(position);
}
protected interface OnItemChangeListener{
void onItemSwiped(int position);
}
}
这里是TouchHelper的初始化
timerAdapter = new TimerAdapter(this, timerList);
timerListView.setAdapter(timerAdapter);
TimerListTouchHelperCallback touchHelperCallback = new TimerListTouchHelperCallback(
timerAdapter,
ItemTouchHelper.LEFT,
ItemTouchHelper.LEFT);
ItemTouchHelper swipeToDismissTouchHelper = new ItemTouchHelper(touchHelperCallback);
swipeToDismissTouchHelper.attachToRecyclerView(timerListView);
我的适配器实现接口(interface) OnItemChangeListener
@Override
public void onItemSwiped(int position) {
notifyItemChanged(position);
removalPendingTimers.add(timerList.get(position));
}
我的 ViewHolder
读取状态,当状态为 TimerHolder.TIMER_PENDING_DELETE
时,它会隐藏 View 的其余部分并显示带有撤消按钮的界面。但这不会发生,直到我将 View 滚动出来并再次滚动回来。有什么建议我缺少什么吗?
链接
最佳答案
终于可以运行了。由于 notifyItemChanged
没有削减它(它应该有),我使用了 notifyItemRemoved
,然后是 notifyItemInserted
。
只是有点滞后,但有效。
关于android - notifyItemChanged 不刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021179/
我知道这可能是一个愚蠢的问题,但我找不到答案。我请求你的帮助。 我有一个使用 LinearLayoutManager 的 RecyclerView 和一个自定义 RecyclerView.Adapte
我正在使用后台服务下载一些文件并更新 RecyclerView 中的进度。当进度更改时,服务将使用回调到 Activity ,其中项目随进度更改。我想知道哪一个在性能方面更好? 所以我必须像这样使用
我有一个 ImageView,其中使用 Glide 加载图像。当我执行了 like 操作后,使用 notifyItemChanged(position) 通知回收器 View 适配器。它会导致图像闪烁
当我在我的 RecyclerView 上调用 notifyItemChanged() 时,相应的 Views(在本例中为按钮)没有按预期更新.我调用他们的原因是数据已经改变,这会导致他们的背景颜色改变
首先,我为此工作了一整天,但一事无成。我有一个 RecyclerView 和一个使用 RecyclerView 的 SortedList 的适配器。我尝试使用回调类实现 TouchHelper: pu
为了在我从详细信息 Activity 返回时从最后选择的 RecyclerView 项目中删除突出显示的背景颜色,我在 onResume() 中尝试了这个: mAdapter.notifyItemCh
RecyclerView 调用 notifyItemChanged() 导致空白条目 我有一个 RecyclerView 并且它的每个子项都有一个 RecyclerView,当子项中的 Recycle
根据documentation在 RecyclerView.Adapter 中,您可以通知某个项目已更改并传入一个“可选负载对象”,该对象随后将被合并并传递给 onBindViewHolder允许更精
我有一个带有显示服务器列表的适配器的 RecycleView并且用户必须选择一个服务器。 当我在 onClick() 方法中调用 notifyItemChanged(previousPosition)
我有一个数据集,它可能会在刷新时发生变化。很难确定现有数据集中的哪些条目已更改。我通读了 recyclerview 适配器说明,我的主要问题是。 确定更改了哪个数据 View ,然后对受影响的范围使用
我有一个使用 LinearLayoutManager 的 RecyclerView 和一个自定义 RecyclerView.Adapter。当用户长按某个项目时,它会触发仅该项目的异步网络刷新。我知道
我正在将 ViewPager2 与 FragmentStateAdapter 一起使用,并且我正在调用 notifyItemChanged(position)。但正如预期的那样,createFragm
编辑 我在 Github 上创建了一个演示项目来展示确切的问题。 Git Project . 我在 Kotlin 中编写了一个可扩展的 recyclerView 每行都有一个使用 TextToSpee
如题。我正在编写一个支持多选模式的自定义 RecyclerView。我需要跟踪每个项目的选中/未选中状态。所以在 recyclerView 的数据大小发生变化之后。我想更新我的跟踪状态列表的大小。但我
我的代码如下所示: public class PopularItemsAdapter extends RecyclerView.Adapter implements MyCartLis
我在 AdapterActivity 中有一个 RecyclerView。单击其任何项目后,我使用 AlertDialogShow#UpdateStudent() 方法更新该项目。我的问题是我无法使用
有什么方法可以在项目更改时从回收 View 中禁用 CardView 提升动画,但保留原始阴影和项目动画师? 我试图禁用 CardView 状态动画器 android:stateListAnimato
所以我有一个 Activity RecyclerView我想改变TextView RecyclerView 中的每一项通过按下具有 onClickListener() 的按钮在 Activity 中。
我正在尝试更新 ViewHolder 中的 RecyclerView 而不重新绑定(bind)整个内容。根据文档,我应该通过调用 RecyclerView.Adapter.notifyItemChan
所以我有一个 RecyclerView,在我拉入其中的每个 xml 中都有一个复选框,当按下该复选框时,该复选框会从 RecyclerView 中删除该特定项目。至少那是我试图做的。据我了解,要使其正
我是一名优秀的程序员,十分优秀!