У меня есть 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>