- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这就是我初始化回收器的方式
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(linearLayoutManager);
这是我的适配器:
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerHolder> {
private List<MyRecyclerItems> recyclerItemsList;
private Context mContext;
private ImageLoader mImageLoader;
private int focusedItem = 0;
public MyRecyclerAdapter(Context context, List<MyRecyclerItems> listItemsList, ImageLoader imageLoader){
this.recyclerItemsList = listItemsList;
this.mContext = context;
this.mImageLoader = imageLoader;
}
@Override
public MyRecyclerHolder onCreateViewHolder(final ViewGroup viewGroup, final int position){
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recycler_items, null);
MyRecyclerHolder holder = new MyRecyclerHolder(v);
holder.recyclerLayout.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TextView redditUrl = (TextView) v.findViewById(R.id.url);
// String postUrl = redditUrl.getText().toString();
// Intent intent = new Intent(mContext, WebViewActivity.class);
// intent.putExtra("url", postUrl);
// mContext.startActivity(intent);
}
});
return holder;
}
@Override
public void onBindViewHolder(final MyRecyclerHolder holder, int position) {
MyRecyclerItems listItems = recyclerItemsList.get(position);
holder.itemView.setSelected(focusedItem == position);
holder.getLayoutPosition();
Log.d("adapter", "adapter called");
holder.photo.setImageUrl(listItems.getImagePath(),mImageLoader);
holder.email.setText(listItems.getEmail());
holder.about.setText(listItems.getAbout());
}
public void clearAdapter(){
recyclerItemsList.clear();
notifyDataSetChanged();
}
@Override
public int getItemCount(){
return (null != recyclerItemsList ? recyclerItemsList.size() : 0);
}
}
这就是我的 logCat 的样子:
11-07 22:57:30.683 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:32.393 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:32.923 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:33.073 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:33.233 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:33.233 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:33.243 22517-22805/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:33.243 22517-22805/name.company.newapp I/qtaguid: Tagging socket 43 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:33.243 22517-22805/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:33.243 22517-22805/name.company.newapp I/qtaguid: Tagging socket 31 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:33.243 22517-22805/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:33.243 22517-22805/name.company.newapp I/qtaguid: Tagging socket 42 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:33.243 22517-22805/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:33.253 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:33.263 22517-22805/name.company.newapp I/System.out: KnoxVpnUidStorageknoxVpnSupported API value returned is false
11-07 22:57:33.263 22517-22805/name.company.newapp I/qtaguid: Tagging socket 31 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:33.273 22517-22803/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:33.273 22517-22803/name.company.newapp I/System.out: KnoxVpnUidStorageknoxVpnSupported API value returned is false
11-07 22:57:33.273 22517-22803/name.company.newapp I/qtaguid: Tagging socket 42 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:33.373 22517-22803/name.company.newapp I/qtaguid: Untagging socket 42
11-07 22:57:33.623 22517-22805/name.company.newapp I/qtaguid: Untagging socket 31
11-07 22:57:33.883 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:34.403 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:34.583 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:35.143 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:35.653 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:36.093 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:37.173 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:37.463 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:38.253 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:38.413 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:38.433 22517-22804/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:38.433 22517-22804/name.company.newapp I/qtaguid: Tagging socket 42 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:38.433 22517-22804/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:38.433 22517-22804/name.company.newapp I/qtaguid: Tagging socket 31 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:38.883 22517-22804/name.company.newapp I/qtaguid: Untagging socket 31
11-07 22:57:38.963 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:39.993 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:40.483 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:40.483 22517-22802/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:40.483 22517-22802/name.company.newapp I/qtaguid: Tagging socket 31 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:40.503 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:40.503 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:40.503 22517-22803/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:40.503 22517-22805/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:40.513 22517-22803/name.company.newapp I/System.out: KnoxVpnUidStorageknoxVpnSupported API value returned is false
11-07 22:57:40.513 22517-22803/name.company.newapp I/qtaguid: Tagging socket 42 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:40.513 22517-22805/name.company.newapp I/System.out: KnoxVpnUidStorageknoxVpnSupported API value returned is false
11-07 22:57:40.513 22517-22805/name.company.newapp I/qtaguid: Tagging socket 46 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:40.713 22517-22803/name.company.newapp I/qtaguid: Untagging socket 42
11-07 22:57:40.753 22517-22805/name.company.newapp I/qtaguid: Untagging socket 46
11-07 22:57:40.763 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:40.883 22517-22802/name.company.newapp I/qtaguid: Untagging socket 31
11-07 22:57:41.563 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:43.713 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:43.833 22517-22517/name.company.newapp D/adapter: Adapter called
11-07 22:57:43.843 22517-22804/name.company.newapp I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-07 22:57:43.843 22517-22804/name.company.newapp I/qtaguid: Tagging socket 42 with tag a72673b100000000{2804315057,0} uid -1, pid: 22517, getuid(): 10804
11-07 22:57:43.893 22517-22804/name.company.newapp I/qtaguid: Untagging socket 42
11-07 22:57:44.233 22517-22517/name.company.newapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-07 22:57:45.653 22517-22517/name.company.newapp V/ActivityThread: updateVisibility : ActivityRecord{22636519 token=android.os.BinderProxy@1f8bf54f {name.company.newapp/name.company.newapp.Recycler.RecyclerView}} show : true
这是正常行为吗?正如您从 logcat 中看到的那样,“Adapter called”出现了很多次。图像也被重新加载,它们会空白一秒钟然后重新加载。
最佳答案
恐怕这是 RecyclerView 的正常行为。它通过仅将显示的项目保留在内存中来优化内存使用,并在显示时使用 onBindViewHolder 方法中分配的内容更新它们,如果您正在加载预缓存的数据和资源,通常会无缝地进行更新。
这里发生的是你有一行:
Log.d("adapter", "adapter called");
在您的 onBindViewHolder 操作中,因此每次您的 RecyclerView 中的项目出现时,都会再次调用它。实际上并不是在 RecyclerView 上重新设置适配器,而是将数据重新加载到特定的查看器中。
您看到的图像重新加载是因为您丢弃了图像,然后在每次 ViewHolder 离开屏幕后在屏幕上滚动/更新/显示时重新加载它们。一个更好的方法是将所有图像加载到 LruCache 中,这是通用图像加载器 does if you switch it on .
关于android - 每次滚动时 RecyclerAdapter 都会重新加载项目 - Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33588844/
我正在从 json api 获取数据,我已将 PrimaryKey 设置为状态。这是我正在获取的 Json 数据: records[ { "id":"192693681",
我遇到以下问题,不幸的是,我的应用程序在进入下一个 Activity 时停止了。罪魁祸首是: public class RecyclerAdapter extends RecyclerView.
我正在尝试使用我的 RecyclerAdapter 中的异步任务,但出于某种原因,我收到此错误:“java.lang.NullPointerException:尝试调用虚拟方法‘android.vie
我试图在名为 RequestFragment 的 Android 应用 Fragment 中显示来自 Firebase 实时数据库的所有用户。但是,该应用程序没有显示任何内容,我在日志中看到的错误是:
我正在开发一个应用程序,它允许用户通过单击 AlertDialog 的“确定”按钮来增加通知标记的值。该值将存储在 MySQL 数据库中。 AlertDialog 在 RecyclerAdapter
我有一个带 fragment 的抽屉导航。 其中一个 fragment 是 WatchListFragment,它包含一个 RecyclerView,其中填充了一个剧集列表。 list 与 Recyc
我正在扩展 FirestoreAdapter 类来填充 firestore 中的数据。我如何将选定的项目 Tittle 传递给主类。我使用界面发送所选项目的文档 ID,如何传递所选标题,即单击的项目的
这是我在主 FeedActivity 中初始化适配器的方式: RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler
我有一个 Fragment,它包含一个使用自定义 RecyclerAdapter 的 RecyclerView。我的自定义 RecyclerAdapter 中有一个 onClickListener -
我有一个返回 JSON 的 API,我想从这个 API 提供的 URL 加载图像。应将图像传递到适配器以进行回收 View 。现在所有包含 Imgae_URL 的项目都被我的适配器跳过,我真的不明白为
我有一个回收服务适配器, View 是某种复杂的按钮,它是从一些 xml 文件创建的:
final FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter(Service.class, R.layout.browse_s
我试图在我的 RecyclerAdapter 中创建响应式点击事件。我无法理解其背后的逻辑,因为我的数据是由 API 自动创建的,因此我的列表中有一些按钮,我希望通过单击它来获得响应。 这是我的代码:
所以我想将我的 GridView 更改为 RecyclerView,因此我必须将我的 BaseAdapter 更改为 RecyclerAdapter。我已经尝试进行更改,但我不知道如何将代码切换到 R
在我的应用程序中,我需要启动 RecyclerAdapter.class 并等待结果,但我无法编写行 setResult 并完成: public static class MyViewHolder e
我正在尝试通过将它们作为替代 View 包含在我的 RecyclerAdapter 中来实现 Facebook 原生广告。有没有人有这方面的经验?为了更好地衡量,我已经包括了我的整个类(class)。
这就是我初始化回收器的方式 mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
我想在我的 RecyclerAdapter 上每 n 个项目显示一个广告。 我很期待 |----- Item 0 -----| |------- AD -------| |----- Item 1 -
我要在我的 RecyclerViewAdapter 上删除一个带有 PopupMenu 的列表项,但是当该项目被删除时,它会保留在 Firebase 上。 This is on the onBindV
我有聊天屏幕,我正在从 FirebaeStorage 下载附件。我有各种格式的文件,可以发送 doc、pdf、apk 等,对于每一种,我都有相同的 TextViews 和 ImageViews。 在聊
我是一名优秀的程序员,十分优秀!