单击它时如何更新 CardView?
How To Update CardView When Click on it?
我有一个 RecyclerView 并使用 CardView 作为我的项目。
我希望当我单击 CardView 时,该视图会更新并显示另一个布局(或设置一些可见和不可见的布局)。
这是我的 onBindViewHolder 代码:
public void onBindViewHolder(final ViewHolder viewHolder, int i) {
ProductTO product = products.get(i);
viewHolder.productUtils.setVisibility(View.GONE);
viewHolder.productName.setText(product.getProductName());
viewHolder.productPrice.setText(product.getProductPrice() + Constants.CURRENCY);
viewHolder.productOldPrice.setText(product.getProductOldPrice() + Constants.CURRENCY);
viewHolder.productOldPrice.setPaintFlags(viewHolder.productOldPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
arcxxImageLoader.LoadImage(product.getProductImages(), viewHolder.productImage);
viewHolder.productView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.productView.setVisibility(View.GONE);
viewHolder.productUtils.setVisibility(View.VISIBLE);
}
});
}
这是我的 Cardview_layout
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android:id="@+id/productView"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_margin="5dp"
card_view:cardCornerRadius="5dp"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/productUtils"
android:padding="10dp"
android:orientation="vertical"
android:gravity="right"
android:weightSum="14"
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
<EditText
android:text="test :|"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<LinearLayout
android:id="@+id/productInfos"
android:padding="10dp"
android:orientation="vertical"
android:gravity="right"
android:weightSum="14"
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
>
<ImageView
android:id="@+id/productImage"
android:layout_width="110dp"
android:layout_height="130dp"
android:scaleType="centerCrop"
android:tint="@color/abc_primary_text_disable_only_material_dark"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
>
<TextView
android:id="@+id/productName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:focusable="true"
android:clickable="true"
android:textSize="16sp"
android:textColor="#2d2d2d"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:id="@+id/productOldPrice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:focusable="true"
android:clickable="true"
android:textSize="14sp"
android:textColor="#fff2594e"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:id="@+id/productPrice"
android:gravity="center"
android:focusable="true"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#ff14ff11"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
但是当我点击 CardView 时,Cardview 消失了,它在我的应用程序上会变成白色 Space ..
当我点击 productInfo 时,我该如何执行此操作,我的 profileUtils 会出现吗?
您不应该将整个 CardView 的可见性更改为 gone ,而是
您应该在 CardView 中隐藏布局。
例如:
viewHolder.productView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.productInfos.setVisibility(View.GONE);
viewHolder.productUtils.setVisibility(View.VISIBLE);
}
});
我有一个 RecyclerView 并使用 CardView 作为我的项目。 我希望当我单击 CardView 时,该视图会更新并显示另一个布局(或设置一些可见和不可见的布局)。
这是我的 onBindViewHolder 代码:
public void onBindViewHolder(final ViewHolder viewHolder, int i) {
ProductTO product = products.get(i);
viewHolder.productUtils.setVisibility(View.GONE);
viewHolder.productName.setText(product.getProductName());
viewHolder.productPrice.setText(product.getProductPrice() + Constants.CURRENCY);
viewHolder.productOldPrice.setText(product.getProductOldPrice() + Constants.CURRENCY);
viewHolder.productOldPrice.setPaintFlags(viewHolder.productOldPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
arcxxImageLoader.LoadImage(product.getProductImages(), viewHolder.productImage);
viewHolder.productView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.productView.setVisibility(View.GONE);
viewHolder.productUtils.setVisibility(View.VISIBLE);
}
});
}
这是我的 Cardview_layout
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android:id="@+id/productView"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_margin="5dp"
card_view:cardCornerRadius="5dp"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/productUtils"
android:padding="10dp"
android:orientation="vertical"
android:gravity="right"
android:weightSum="14"
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
<EditText
android:text="test :|"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<LinearLayout
android:id="@+id/productInfos"
android:padding="10dp"
android:orientation="vertical"
android:gravity="right"
android:weightSum="14"
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
>
<ImageView
android:id="@+id/productImage"
android:layout_width="110dp"
android:layout_height="130dp"
android:scaleType="centerCrop"
android:tint="@color/abc_primary_text_disable_only_material_dark"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
>
<TextView
android:id="@+id/productName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:focusable="true"
android:clickable="true"
android:textSize="16sp"
android:textColor="#2d2d2d"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:id="@+id/productOldPrice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:focusable="true"
android:clickable="true"
android:textSize="14sp"
android:textColor="#fff2594e"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<TextView
android:id="@+id/productPrice"
android:gravity="center"
android:focusable="true"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#ff14ff11"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
但是当我点击 CardView 时,Cardview 消失了,它在我的应用程序上会变成白色 Space ..
当我点击 productInfo 时,我该如何执行此操作,我的 profileUtils 会出现吗?
您不应该将整个 CardView 的可见性更改为 gone ,而是 您应该在 CardView 中隐藏布局。
例如:
viewHolder.productView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.productInfos.setVisibility(View.GONE);
viewHolder.productUtils.setVisibility(View.VISIBLE);
}
});