2017-09-16 55 views
0

我一直在尋找在今後相當一段時間,還沒找到一個合適的回答消除他們:Recyclerview:隱藏項目,而不從ArrayList中

有沒有辦法從RecyclerView不刪除刪除項目它從底層ArrayList? 我想添加一個功能,當某個條件成立時,暫時從列表中隱藏項目。我後來仍然需要這些項目,但管理2個單獨的ArrayList看起來過於複雜。 如果我將適配器內部的可見性設置爲gone,那麼我在項目所在的位置有一個可見的間隙,所以這不是解決方案。

有什麼辦法可以避免管理2個獨立的ArrayLists?

+0

當您將物品可見性設置爲'GONE'時,您可以發佈RecyclerView的外觀嗎? –

+0

請發佈您的適配器代碼。 –

回答

0

你有一個模型/ POJO類對象類型

而從JsonResponse迭代JsonData的只是通過布爾值的true/false在對象類型模型類,你有對象類型的ArrayList。您想要顯示的數據使其成爲true否則爲false,之後您可以將'false value設置爲true'給Model類。

希望這會起作用。

+0

我認爲問題是關於隱藏整行,而不是單個視圖。 –

+0

在從服務器加載數據之前,請在活動中進行適配器佈局(row_item)映射並在recyclerview/Listview中設置適配器。獲取數據後,不要做'adapter.notifyDataSetChanged',這樣你的listview就會變成空白/隱藏。每當你想要顯示查看只是做notifyDataSetChanged。 –

+0

爲什麼在獲取數據後不通知適配器?此外,仍然不確定的行阻止視圖被膨脹成一排 –

0

我想你將不得不從數據模型中刪除。否則,如你所說,或者當你滾動時,你會最終得到空白行,「隱藏的」回收元素會混亂起來。

僅僅因爲您從Arraylist中刪除並不意味着您不能添加其他列表來臨時存儲已刪除的項目。

例如,在適配器

private List<Item> removed = new ArrayList<>(); 

public void remove(int position) { 
    removed.add(items.get(position)); 
    items.remove(position); 
    notifyDataSetChanged(); 
} 

如果您需要了解您已刪除的項目,一個HashMap可能會更好更好的功能進行定義。