我知道这个问题被问了很多次,很抱歉重复了一遍,但我就是不知道该怎么办。
我正在使用Glide将图像从服务器加载到我的RecycleView
和它的侦听器中,所以当我的图像被加载时,它应该保存int 1,然后在我的片段中,我的RecycleView
在哪里,我正在获取SharedPreferences int并检查它是否不是1,然后我的RecycleView
xml转到不可见/消失,最后我检查我的一些RecycleView
是否消失了/不可见我的所有布局都应该消失了,这样我的布局就会在所有图像加载后加载。
但问题是,我的SharedPreference
中的默认值总是被触发的,我不知道为什么...我也尝试过PreferenceManager.getDefaultSharedPreferences()
,但没有什么不同。
我的适配器滑动:
Glide.with(context)
.load(listaSvihMembersa.get(i).getImageUrl())
.circleCrop()
.placeholder(R.drawable.ic_joint)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
SharedPreferences sp = context.getSharedPreferences("mortgage", MODE_PRIVATE);
sp.edit().putInt("motgageList", 1).apply();
return true;
}})
.into(binding.detailedListIMG);
}
和我获取SharedPref的片段
private void setMortgageRecycleView(List<MortgageLiabilities> mortgageLiabilitiesList) {
mortgageRecycleView = binding.rvMortgageList;
mortgageRecycleView.animate().translationY(0);
MortgageAdapter adapter = new MortgageAdapter(mortgageLiabilitiesList, context, this, listaSvihMembersa,mortgageRecycleView);
mortgageRecycleView.setAdapter(adapter);
SharedPreferences sp = context.getSharedPreferences("mortgage",MODE_PRIVATE);
int idNmbr = sp.getInt("motgageList", 0);
if (idNmbr != 1){
mortgageRecycleView.setVisibility(View.INVISIBLE);
Log.i(TAG, "visibility motgageListe: " + mortgageRecycleView.getVisibility());
}
else {
mortgageRecycleView.setVisibility(View.VISIBLE);
Log.i(TAG, "visibility motgageListe: " + mortgageRecycleView.getVisibility());
}
mortgageRecycleView.setLayoutManager(new LinearLayoutManager(context));
mortgageRecycleView.setHasFixedSize(true);
}
这里,我检查是否有任何Recycleviews
是不可见的:
if (mortgageRecycleView.getVisibility() == View.INVISIBLE || loansRecycleViews.getVisibility() == View.INVISIBLE
|| otherRecycleView.getVisibility() == View.INVISIBLE || creditCardRecycleView.getVisibility() == View.INVISIBLE){
binding.constraintLayout.setVisibility(View.GONE);
Toast.makeText(context, "Ne moze da ucita,root view je GONE", Toast.LENGTH_SHORT).show();
}
编辑:我的shared_pref.xml文件
<map>
<int name="motgageList" value="1" />
</map>
发布于 2021-01-14 14:24:38
Glide正在执行一个异步任务,所以在大多数情况下,你的代码会在回调onResourceReady
被调用之前到达int idNmbr = sp.getInt("motgageList", 0);
。
共享首选项在这里不是一个好的选择,您可以使用自定义回调并将其传递给您的适配器。
https://stackoverflow.com/questions/65720185
复制相似问题