2017-08-11 59 views
-1

我有一个RecyclerView这将显示项目列表。我想为我的列表提供过滤器,这样如果用户选择A,适配器将跳过其他类型并仅显示A是否可以跳过RecyclerView.Adapter中的项目?

public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> { 
    private List<Item> mItems; 
    private String mSelectedType; 

    @Override 
    public void onBindViewHolder(ItemViewHolder holder, int position) { 
     Item item = mItems.get(position); 
     if (mSelectedType.equals(item.getType())) { 
      //bind it 
     } else { 
      //skip it 
     } 
    } 

    public void setSelectedType(String selectedType) { 
     mSelectedType = selectedType; 
    } 
} 
+1

为什么你不刷新你的mItems列表来不包含已删除的项目,或者如果你仍然需要它们,创建一个没有删除项目的tempList并将其放到适配器中。 –

+0

如果它已被删除,那么它不应该显示在列表中。它是如何被删除的? – FaisalAhmed

回答

0

,你必须从你在RecyclerView绑定列表中删除isDeleted()项目。那么必须在RecyclerView之后进行绑定。

1

使用为:〜

remove(position); 
notifyItemRemoved(position); 
1

如果你传递全球List<Item> mItems到适配器构造和使用这个列表来填充RecycleView,那么在您从列表中删除的项目在同一个地方,你应该只需调用adapter.notifyDataSetChanged(),该项目将不再出现在列表中。

相关问题