我遇到了一个非常困难的情况,我无法找到解决方案。
我有一个部分的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);
}
}