【发布时间】:2021-04-19 13:02:31
【问题描述】:
我知道这个问题被问了很多次,很抱歉重复了一遍,但我根本不知道该怎么做。
我正在使用 Glide 将图像从服务器加载到我的 RecycleView 并且它是侦听器,所以当我的图像加载时,它应该保存 int 1 然后在我的片段中,我的 RecycleView 是,我得到了 SharedPreferences int 并检查它是否不是 1 而不是我的 RecycleView xml go INVISIBLE/GONE 然后最后我检查我的一些 RecycleView 是否 GONE/INVISIBLE 我的所有布局都应该消失,以便我的布局在我所有的图片已加载。
但问题是我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>
【问题讨论】:
-
请在保存数据后使用断点并检查共享的 pref xml 文件。会建议您对 PREFERANCE 和键名使用常量。
-
@Yogendra 我检查了我的 shared_pref.xml 文件并编辑了问题..它说正确的值...
-
@Yogendra 好的,我重新安装了我的应用程序,从存储中删除了数据,现在当我尝试打开 shared_pref.xml 时出现错误,说没有这样的文件或目录
标签: java android android-recyclerview sharedpreferences android-glide