这是我初次化我的回收商
的方式 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&#34;适配器中看到的那样,#34;出现了很多。图像也会重新加载,它们会空白一秒钟然后重新加载。
答案 0 :(得分:1)
我担心这是RecyclerView的正常行为。它通过仅在内存中保存显示的项目来优化内存使用,并在显示时使用onBindViewHolder方法中指定的内容更新内存使用情况,如果要加载预先缓存的数据和资源,则通常无缝地进行更新。
这里发生的是你有这条线:
Log.d("adapter", "adapter called");
在你的onBindViewHolder操作中,所以每次RecyclerView中的项进入视图时,都会再次调用它。实际上并不是在RecyclerView上重新设置适配器,而是将数据重新加载到特定的视图中。
您看到的图像重新加载是因为您丢弃图像,然后每次在屏幕外滚动/更新/显示ViewHolder后重新加载它们。更好的方法是将所有图像加载到LruCache中,通用图像加载器does if you switch it on。