llf2580 2023-03-21 15:02 采纳率: 66.7%
浏览 19
已结题

Andriod Studio:如何利用循环向list加入符合条件的数据?

我创建了SharedPreferences lt= getSharedPreferences("LoginTags", Context.MODE_PRIVATE);用来存放用户选择的三个标签,然后创建了应该RecommendItem类,里面也包含了三个标签,可以用getTag1\2\3()来获取标签。
现在我将所有创建的RecommendItem对象都加入表list,有一个或多个标签和用户选择的标签一致的再加入recommend_list表里,最后通过自定义的适配器显示到ListView里。利用Toast显示选择的标签也是没有问题的
请问下面代码有什么问题,为什么显示不出来?

// 取出用户选择的标签
SharedPreferences lt= getActivity().getSharedPreferences("LoginTags", Context.MODE_PRIVATE);
String tag1 = lt.getString("tag1","");
String tag2 = lt.getString("tag2","");
String tag3 = lt.getString("tag3","");

for(int i = 0;i < list.size();i ++) {// 遍历所有RecommentItem对象,选择符合条件的加入推荐列表
      RecommendItem item = list.get(i);
      String item_tag1 = item.getTag1();
      String item_tag2 = item.getTag2();
      String item_tag3 = item.getTag3();
      // System.out.println(item.getItemTitle()+"\ntag1:"+item.getTag1()+" tag2:"+item.getTag2()+" tag3:"+item.getTag3());

      Boolean tag1_show = item_tag1.equals(tag1) || item_tag1.equals(tag2) || item_tag1.equals(tag3);
      Boolean tag2_show = item_tag2.equals(tag1) || item_tag2.equals(tag2) || item_tag2.equals(tag3);
      Boolean tag3_show = item_tag3.equals(tag1) || item_tag3.equals(tag2) || item_tag3.equals(tag3);
      if(tag1_show || tag2_show || tag3_show)
             recommend_list.add(item);
 }

我将上面的代码替换成 下面的是能正常显示的,适配器是没有问题的

recommend_list.add(video1);
recommend_list.add(video2);
recommend_list.add(video3);
// video1、2、3是创建好的RecommendItem对象
  • 写回答

2条回答 默认 最新

  • 码上就疯 2023-03-21 16:12
    关注

    1、list.size() 是否大于0?
    2、tag中是否含有空格?
    3、建议在循环中打印比较的数据,以及比较结果,方便定错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月21日
  • 已采纳回答 3月21日
  • 修改了问题 3月21日
  • 创建了问题 3月21日