@Override public void onFilterChanged(int filterType, int position) { // TODO Auto-generated method stub int Type = filterInfos.get(position).getFilterType(); // 获取类型 FilterLayoutUtils.this.position = position; mMagicDisplay.setFilter(filterType); if (position != 0) btn_Favourite.setVisibility(View.VISIBLE); else btn_Favourite.setVisibility(View.INVISIBLE); btn_Favourite.setSelected(filterInfos.get(position).isFavourite()); if (position <= favouriteFilterInfos.size()) { // 点击Favourite列表 for (int i = favouriteFilterInfos.size() + 2; i < filterInfos.size(); i++) { if (filterInfos.get(i).getFilterType() == Type) { filterInfos.get(i).setSelected(true); mAdapter.setLastSelected(i); FilterLayoutUtils.this.position = i; mAdapter.notifyItemChanged(i); } else if (filterInfos.get(i).isSelected()) { filterInfos.get(i).setSelected(false); mAdapter.notifyItemChanged(i); } } } for (int i = 1; i < favouriteFilterInfos.size() + 1; i++) { if (filterInfos.get(i).getFilterType() == Type) { filterInfos.get(i).setSelected(true); mAdapter.notifyItemChanged(i); } else if (filterInfos.get(i).isSelected()) { filterInfos.get(i).setSelected(false); mAdapter.notifyItemChanged(i); } } }
@Override public void onClick(View v) { if (position != 0 && filterInfos.get(position).getFilterType() != -1) { int Type = filterInfos.get(position).getFilterType(); // 获取类型 if (filterInfos.get(position).isFavourite()) { // 取消Favourite------------------------------------ btn_Favourite.setSelected(false); filterInfos.get(position).setFavourite(false); mAdapter.notifyItemChanged(position); int i = 0; for (i = 0; i < favouriteFilterInfos.size(); i++) { if (Type == favouriteFilterInfos.get(i).getFilterType()) { // 取消对应Favourite列表中元素 favouriteFilterInfos.remove(i); filterInfos.remove(i + 1); // 从filterInfos去除 mAdapter.notifyItemRemoved(i + 1); mAdapter.setLastSelected(mAdapter.getLastSelected() - 1); break; } } position--; mAdapter.notifyItemRangeChanged(i + 1, filterInfos.size() - i - 1); } else { // 增加favourite btn_Favourite.setSelected(true); // 更改状态 filterInfos.get(position).setFavourite(true); mAdapter.notifyItemChanged(position); FilterInfo filterInfo = new FilterInfo(); filterInfo.setFilterType(Type); filterInfo.setSelected(true); filterInfo.setFavourite(true); filterInfos.add(favouriteFilterInfos.size() + 1, filterInfo); position++; mAdapter.notifyItemInserted(favouriteFilterInfos.size() + 1); mAdapter.notifyItemRangeChanged( favouriteFilterInfos.size() + 1, filterInfos.size() - favouriteFilterInfos.size() - 1); favouriteFilterInfos.add(filterInfo); mAdapter.setLastSelected(mAdapter.getLastSelected() + 1); } saveFavourite(); } }