public class Adapter extends RecyclerView.Adapter implements ListCallBack {
private static final int parent_ = 1;
private static final int child_ = 2;
private static final int custom_ = 3;
private final Context context;
private ArrayList<ItemParent> parentArrayList = new ArrayList<>();
private ArrayList<Object> childArrayList = new ArrayList<>();
public Adapter(Context mContex){
this.context = mContex;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
RecyclerView.ViewHolder viewHolder = null;
switch (viewType){
case parent_:
viewHolder = new
ParentHolder(inflater.inflate(R.layout.item_parent, parent, false), this);
break;
case custom_:{
viewHolder = new CustomHolder(inflater.inflate(R.layout.item_custom,parent,false));
}
case child_:{
viewHolder = new childHolder(inflater.inflate(R.layout.item_child,parent,false));
}
}
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (getItemViewType(position) == parent_) {
((ParentHolder) holder).bind((ItemParent) childArrayList.get(position));
} else if (getItemViewType(position) == child_) {
((ChildHolder) holder).bind((ItemChild) childArrayList.get(position));
}
}
@Override
public int getItemCount() {
return childArrayList.size();
}
@Override
public int getItemViewType(int position) {
if (getItem(position) instanceof ItemParent)
return parent_;
else if (getItem(position) instanceof ItemChild)
return child_;
else
return -1;
}
private Object getItem(int position) {
return childArrayList.get(position);
}
private void generateItems() {
childArrayList = new ArrayList<>();
for (ItemParent itemParent : parentArrayList) {
childArrayList.add(itemParent);
if (itemParent.isExpanded()) {
for (ItemChild item : itemParent.getItems()) {
childArrayList.add(item);
}
}
}
notifyDataSetChanged();
}
public void setData(ArrayList<ItemParent> itemParents) {
this.parentArrayList = itemParents;
generateItems();
}
@Override
public void setExpanded(int groupId, boolean expanded) {
for (ItemParent itemParent : parentArrayList) {
if (itemParent.getId() == groupId)
itemParent.setExpanded(expanded);
}
generateItems();
}
}
как покласть в него на позицию 4 другой cardview?