如何校验JSON响应体ID与SharedPreference中存储的用户登录ID?
步骤1:从SharedPreference读取登录用户ID
先实现从SharedPreference中取出存储的登录ID,替换代码里的SP名称和存储key为你实际使用的:
// 获取SharedPreference实例 SharedPreferences sharedPref = getSharedPreferences("YourAppPrefs", Context.MODE_PRIVATE); // 读取存储的用户ID,默认值为空字符串(避免空指针) String storedLoginId = sharedPref.getString("saved_user_id", "");
步骤2:在响应回调中添加校验逻辑
在你现有代码的currentPageScientists != null && currentPageScientists.size() > 0代码块内,加入ID对比逻辑:
if (currentPageScientists != null && currentPageScientists.size() > 0) { // 先获取存储的登录ID SharedPreferences sharedPref = ScientistsActivity.this.getSharedPreferences("YourAppPrefs", Context.MODE_PRIVATE); String storedLoginId = sharedPref.getString("saved_user_id", ""); // 遍历响应中的数据,逐个校验ID for (Scientist scientist : currentPageScientists) { String responseId = scientist.getId(); // 先判断响应ID不为空,再做对比 if (responseId != null && responseId.equals(storedLoginId)) { // ID匹配时的处理逻辑,比如提示用户、标记条目等 show(ScientistsActivity.this, "ID匹配成功:" + responseId); } else { // ID不匹配时的处理逻辑,按需选择是否提示 // show(ScientistsActivity.this, "ID不匹配:响应ID=" + responseId + " 存储ID=" + storedLoginId); } } // 你原有的列表更新逻辑 if (action.equalsIgnoreCase("GET_PAGINATED_SEARCH")) { allPagesScientists.clear(); } allPagesScientists.addAll(currentPageScientists); }
优化提示
如果只需要判断列表中是否存在匹配的ID,不需要遍历全部数据,可以找到匹配项后直接跳出循环:
boolean hasMatchedId = false; for (Scientist scientist : currentPageScientists) { String responseId = scientist.getId(); if (responseId != null && responseId.equals(storedLoginId)) { hasMatchedId = true; break; } } if (hasMatchedId) { // 存在匹配ID的处理 } else { // 无匹配ID的处理 }
内容的提问来源于stack exchange,提问作者Pathumi
相关产品推荐
相关产品推荐

