- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在回收站 View 中的第一个位置插入一个项目,即 0 索引,如下所示
try {
commentList.add(new Comment(
Preferences.getProfileImageUrl(),
"",
Preferences.getUserName(DONApplication.getInstance()),
String.valueOf(Preferences.getUserId(DONApplication.getInstance())),
response.getString("comment_id"),
commentText
));
commentAdapter.notifyItemInserted(commentList.size() - 1);
} catch (Exception e) {
e.printStackTrace();
}
但它根本没有显示,但是当我关闭窗口并再次打开它时,它就可以看到了。我不知道为什么会这样。有人可以帮助我吗?
最佳答案
经过几个小时的努力——这就是我的发现。项目 0 已添加到列表中,屏幕已经显示之前为 0-9 的项目,现在显示为项目 1-10。
您需要以编程方式滚动到位置 0 才能看到新添加的项目。
我用过
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
this.recyclerView = recyclerView;
super.onAttachedToRecyclerView(recyclerView);
}
获取对附加到适配器的 recyclerView 的引用(在我的例子中,我知道只有一个可能的 recyclerView,javadoc 指出可能有多个)
在位置 0 添加项目后,我检查第一个可见项目是否为 0(如果用户已经向下滚动,我不想滚动)
private void restoreScrollPositionAfterAdAdded() {
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
if (layoutManager != null) {
int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
if (firstVisibleItemPosition == 0){
layoutManager.scrollToPosition(0);
}
}
}
关于android - 在零索引处插入第一项时,notifyItemInserted() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114837/
我正在将我的应用程序从 sqlite 迁移到 Firebase。以前我会从数据库读取 N 项到数组列表并调用 notifyItemRangeInserted。现在从 Firebase 获取数据最方便的
我需要做的是将项目插入到 RecyclerView 的顶部。我有一个适配器,它保留了我的项目的 List,当我想添加到 RecyclerView 的顶部时,我只是使用这段代码: mItems.add(
我有一个 RecyclerView.Adapter 带有 hasStableIds(true); 和一个 LinearLayoutManager 带有 reverseLayout(true); 我向适
我正在使用 RecyclerView,.notifyItemInserted 仅将一项插入 RecyclerView。对于多个项目,我该怎么做?我想避免使用 .notifyDataSetChanged
必须notifyItemRangeChanged调用后被调用notifyItemInserted在 RecyclerView.Adapter 中?SO 上有很多示例,他们总是在 notifyItemI
当我添加一个新项目时,我正在调用方法 public void addItem(ArrayList> arrayList, int position){ this.arrayList=array
如果我们使用这两种方法来告诉适配器您指向的数据已更改,我很困惑,那么它们之间有什么区别。 最佳答案 notifyDataSetChanged() 可以被认为是一个“主要”变化。您是在告诉适配器数据集中
所以出于某种原因,每当我向我的 ArrayList 添加一个新项目并通知 recyclerview 它已被添加时,它会复制前一个条目的数据。因此, View 已创建,但使用的是最后一个条目中的数据,而
出于某种原因,当向 RecyclerView 添加一个新项目时(应该插入到列表的顶部),它不会显示,除非我向下滚动列表并返回到顶部,并且没有任何动画任何一个。 (只是出现在列表的顶部,就好像它一直都在
我正在尝试在回收站 View 中的第一个位置插入一个项目,即 0 索引,如下所示 try { commentList.add(new Comment( Prefer
我有一个要求,我应该在滚动和更新列表的同时下载广告项。由于调用 notifyDatasetChnaged() 会重置所有内容,因此我正在调用 notifyItemInserted(position)。
我正在将我的适配器移植到 RecyclerView.Adapter 我想要达到的目标:当用户在接近尾声时向下滚动时,我想开始获取数据,我还想在最后添加我的 ProgressBar View ,让用户知
我对 Android 还很陌生,目前正在开发我的第一个基于 RecyclerView 的严肃应用程序。当我插入或更新现有行时,我注意到我的应用程序中有一些有问题的行为:即使我在添加或 notifyIt
例如,您有一个适配器,并在 onBindViewHolder 方法中将 OnClickListener 设置为某些 View (并根据 View 位置在那里执行一些操作)。您应该将 final 分配给
最近我将我的 recyclerview-v7:23 升级到 recyclerview-v7:24.2.0。我的应用程序有一个无穷无尽的滚动列表。当我将加载 View 添加到 RecyclerView
我正在使用 data.add(0,item); notifyItemInserted(0); 只要项目空间没有被填满,这就可以正常工作。之后就看不到动画了。 当我这样做时动画效果很好 data.add
我有一个带有水平线性布局管理器的 RecyclerView,声明如下: RecyclerView graph = (RecyclerView) findViewById(R.id.graph); Re
我正在尝试将 Firebase 支持的 RecyclerView 集成到 React Native 应用程序中。对于硬编码数据,它运行良好,但是在插入动态加载的行并在 RecyclerView.Ada
我是一名优秀的程序员,十分优秀!