在for循环中从适配器/ arraylist中删除项目,保留项目的顺序

时间:2016-12-29 16:17:42

标签: android arraylist adapter simpleadapter

我遇到了一个非常困难的情况,我无法找到解决方案。

我有一个部分的recyclerview,我通过arraylist填充数据,这些数据包含URL链接和普通文本。

普通文本应在recyclerview中设置为部分,将URL设置为项目。 棘手的部分是,arraylist需要与部分具有特定的顺序

因此,recylcerview应该看起来像,例如

URL
Section 1
URL
URL
Section 2
URL
URL
URL
URL
Section 3
etc...

我首先尝试修改(删除)arraylist本身的项目,但它不会起作用,因为这些部分和URL会出现故障。

然后我想把整个列表加载到recylerview中并在显示它之前从SimpleAdapter中删除相关项(在下面的代码中标记为dummy),但这在for循环中不起作用

那么我如何适配器或arraylist 删除虚拟项目而不会丢失recylcerview中显示的部分和URL的顺序

在下面的代码中,我填写了arraylist并设置了部分。

public static List<String> test = new ArrayList<>();
int k = 0;

for (String str : Arrays.asList(lines)) {
    str = unescapeJavaString(String.valueOf(Html.fromHtml(str)));

    if (!str.contains("some info")) {

     // if it is a URL add to arraylist, otherwise set section at relevant position in adapter.
     if (str.startsWith("http")) {
       test.add(k, str);
    } else {
      sections.add(new SimpleSectionedRecyclerViewAdapter.Section(k, str));
      test.add(k, "dummy"); // add dummy which should be removed.
    }
    k++;
  }
}

从适配器中删除它也不起作用:

int i = 0;
  ...
mAdapter = new SimpleAdapter(this, sCheeseStrings, userID, dlTypeValue);
  ...
recyclerView.setAdapter(mSectionedAdapter);

        Iterator itr = test.iterator();
            String strElement = "";
            while (itr.hasNext()) {
                i++;
                strElement = (String) itr.next();
                if (strElement.equals("dummy")) {
                    mAdapter.remove(i);
                    mAdapter.notifyItemRemoved(i);
              }
         }

0 个答案:

没有答案