【问题标题】:unable comparing data in fragment无法比较片段中的数据
【发布时间】:2017-09-18 04:48:33
【问题描述】:

我想将 arraylist 与我的状态列表进行比较,以在主片段中显示 unBlocked 状态,这是我要比较的数据

this is **idStatusBlocked = {"sdads # asdadsf # advdvff"};**<br>
this is **listData = [{"idStatus":"asdfsdf", "name":"BWaaa"}, {"idStatus":"advdvff","name":"aaaa"}];**

此代码在我执行阻止操作之前

@Override
public void setList(List<StatusObject> listData){
    adapter.addAll(listData);
    adapter.notifyDataSetChanged();
}

为了实现被阻止的操作,这就是我尝试的方法

@Override
public void setList(List<StatusObject> listData){

    PreferenceHelper helper = new PreferenceHelper(mContext);
    String item = helper.getString(PreferenceHelper.BLOCK);
    String[] idStatusBlocked = item.split("#");

    List<StatusObject> filter = new ArrayList<>();
    for (String v : idStatusBlocked) {
        if (!listData.contains(v)) {
            filter.add((StatusObject) listData);
        }       
    }
}

我从上面的代码中得到的只是比较 listDataidStatusBlocked 的大小,而我想要的是
1.我将listData 中的idStatusidStatusBlocked 进行比较?
2. 比较数据后,如何通过适配器显示?

【问题讨论】:

  • @YvetteColomb 是的,它来自我的代码,但我在这里重写了

标签: android android-fragments arraylist


【解决方案1】:

setList改成这个

@Override
public void setList(List<StatusObject> listData){
    PreferenceHelper helper = new PreferenceHelper(mContext);
    String item = helper.getString(PreferenceHelper.BLOCK);

    Set<String> blocked = new HashSet<>(Arrays.asList(item.split("#")));
    List<StatusObject> filter = new ArrayList<>();

    for (StatusObject s : listData) {
        if (!blocked.contains(s.getIdStatus())) {
            filter.add(s);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2013-08-26
    • 2018-01-22
    • 2022-11-27
    • 2023-02-14
    相关资源
    最近更新 更多