ExpandableTextView в CardView для открытия и закрытия с помощью Click Android

У меня есть CardView, у которого ExpandableTextView в качестве Ребенка CardView, когда я был нажат на CardView, расширяемый текстовый вид расширяется, а также в следующий клик он был закрыт, но главная проблема заключается в том, что когда я нажимаю на Расширяемый текстовый вид, он был расширен и также некоторые из других расширяемых TextViewViewViewViewView в RecycleView также расширялись без нажатия на этот CardView. я искал причину, но не смог получить правильное решение, и я новичок в разработке концепции материального макета. Поэтому, пожалуйста, помогите мне в моем следующем коде. Спасибо в Advance.

Ниже приведен мой код для адаптера RecycleView.

public class TestRecyclerViewAdapter extends RecyclerView.Adapter<TestRecyclerViewAdapter.PersonViewHolder> {


FloatingActionMenu menubutton;
Context con;
Handler handler;
public ExpandableTextView previous_text_view = null;

public static class PersonViewHolder extends RecyclerView.ViewHolder {

    CardView cv;
    TextView personName;
    TextView personAge;
    ImageView personPhoto;
    ExpandableTextView expandableTextView;
    CustomObject object;
    // FloatingActionButton button;


    PersonViewHolder(View itemView) {
        super(itemView);
        cv = (CardView) itemView.findViewById(R.id.cv);
        expandableTextView = (ExpandableTextView) itemView.findViewById(R.id.expandingTextView);
        // button = (FloatingActionButton)itemView.findViewById(R.id.action_c);

    }

    public void bindexpand(CustomObject cob){
        object = cob;
        //expandableTextView.isExpanded(object.isExpanded());
    }
}

List<CustomObject> contents;

static final int TYPE_HEADER = 0;
static final int TYPE_CELL = 1;

public TestRecyclerViewAdapter(List<CustomObject> contents, FloatingActionMenu button, Context context) {
    this.contents = contents;
    menubutton = button;
    con = context;
}

@Override
public int getItemViewType(int position) {
    switch (position) {
        case 0:
            return TYPE_HEADER;
        default:
            return TYPE_CELL;
    }
}

@Override
public int getItemCount() {
    return contents.size();
}

@Override
public PersonViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = null;

    switch (viewType) {
        case TYPE_HEADER: {
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_item_card_big, parent, false);
            return new PersonViewHolder(view) {
            };
        }
        case TYPE_CELL: {

            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_item_card_small, parent, false);
            final PersonViewHolder pvh = new PersonViewHolder(view);
            return pvh;
        }
    }
    return null;
}


@Override
public void onBindViewHolder(final PersonViewHolder holder, final int position) {
    switch (getItemViewType(position)) {
        case TYPE_HEADER:
            break;
        case TYPE_CELL:
            // holder.button.setColorNormalResId(R.color.blue);
            final int pos = position;
            holder.cv.setTag(new Integer(pos));
            final CustomObject c = contents.get(pos);
            holder.cv.setOnClickListener(new View.OnClickListener() {
                @TargetApi(Build.VERSION_CODES.HONEYCOMB)
                @Override
                public void onClick(View v) {
                    holder.expandableTextView.toggleExpansion();
                    CardView cvdata = (CardView)v;
                    int clickedPos = ((Integer)cvdata.getTag()).intValue();
                    if (holder.expandableTextView.isExpanded()) {
                            for (int i=1;i<contents.size();i++){
                                if(clickedPos != i && contents.get(i).isExpanded() == true){
                                    c.setIsExpanded(false);
                                    notifyItemChanged(i);
                                }
                            }
                        menubutton.showMenuButton(true);
                        contents.get(clickedPos).setIsExpanded(true);
                    } else {
                        menubutton.hideMenuButton(true);
                    }


                }
            });
            break;
    }
}
}

Теперь, следующий код для класса My Custom Object:

public class CustomObject {

String data;
boolean isExpanded;

public CustomObject(){

}

public String getData() {
    return data;
}

public void setData(String data) {
    this.data = data;
}


public boolean isExpanded() {
    return isExpanded;
}

public void setIsExpanded(boolean isExpanded) {
    this.isExpanded = isExpanded;
}


}

Последний, код для раскладки XML-карт.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">



        <android.support.v7.widget.CardView
            android:id="@+id/cv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardCornerRadius="2dp"
            app:cardElevation="2dp"
            android:layout_marginBottom="@dimen/cardMarginVertical"
            android:layout_marginLeft="@dimen/cardMarginHorizontal"
            android:layout_marginRight="@dimen/cardMarginHorizontal"
            android:layout_marginTop="@dimen/cardMarginVertical"
            app:cardPreventCornerOverlap="false"
            app:contentPadding="0dp">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            <com.github.florent37.materialviewpager.sample.ExpandableTextView
                android:id="@+id/expandingTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="15dp"
                android:layout_marginLeft="10dp"
                android:maxLines="3"
                android:layout_marginTop="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginBottom="10dp"
                android:text="@string/longText" />
            </LinearLayout>
        </android.support.v7.widget.CardView>



</FrameLayout>