Mou*_*esh 1 android android-recyclerview
我有一个recyclerview,我需要在单击操作栏菜单时显示复选框,如下所示 
我如何实现这样的目标?我尝试从我的活动中调用适配器方法,并将复选框的可见性设置为可见,然后调用,notifyDataSetChanged()但是它仅在一行中显示复选框。这是我的适配器代码
public class CartItemListAdapter extends RecyclerView.Adapter<CartItemListAdapter.MyViewHolder> {
private List<CartItemDetail> cartItemDetailList;
private Context context;
private CheckBox checkbox;
public CartItemListAdapter (List<CartItemDetail> cartItemDetailList){
this.cartItemDetailList=cartItemDetailList;
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView cartProductName, totalValue,leftValue;
private ImageView cartProductImage, incrementButton,decrementButton;
private EditText coinValue;
public MyViewHolder(View view) {
super(view);
cartProductImage=(ImageView)view.findViewById(R.id.cart_product_image);
incrementButton=(ImageView)view.findViewById(R.id.cartIncrementImg);
decrementButton=(ImageView)view.findViewById(R.id.cartDecrementImg);
coinValue=(EditText)view.findViewById(R.id.cartBetCoinValue);
cartProductName=(TextView)view.findViewById(R.id.cart_product_name);
totalValue=(TextView)view.findViewById(R.id.cart_ProductTotal_qty);
leftValue=(TextView)view.findViewById(R.id.cart_ProductRemaining_qty);
checkbox=(CheckBox)view.findViewById(R.id.cart_item_checkbox);
}
@Override
public void onClick(View v) {
}
}
@Override
public CartItemListAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context=parent.getContext();
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cart_item_row, parent, false);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callProductEventDetails();
}
});
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(CartItemListAdapter.MyViewHolder holder, int position) {
CartItemDetail cartItemDetail=cartItemDetailList.get(position);
holder.cartProductName.setText(cartItemDetail.getCartProductName());
holder.leftValue.setText(Html.fromHtml("<pre>" + "Left:" + "</pre>" + "<font color=\"#EF4836\">" + cartItemDetail.getProductLeftQty() + "</font>"));
holder.totalValue.setText("Total:"+cartItemDetail.getProductTotalQty());
holder.coinValue.setText(cartItemDetail.getAddedCoins());
Glide.with(context)
.load(cartItemDetail.getCartProductImageUrl())
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.fitCenter()
.into(holder.cartProductImage);
}
@Override
public int getItemCount() {
return cartItemDetailList.size();
}
private void callProductEventDetails(){
Intent intent= new Intent(context, ProductEventDetailActivity.class);
intent.putExtra("eventStatus","inProgress");
context.startActivity(intent);
}
public void displayCheckBox(){
checkbox.setVisibility(View.VISIBLE);
notifyDataSetChanged();
}
}
Run Code Online (Sandbox Code Playgroud)
项目行的XML。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_marginBottom="1dp"
android:elevation="0dp"
app:cardElevation="0dp">
<LinearLayout
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true">
<CheckBox
android:visibility="gone"
android:padding="-25dp"
android:gravity="center"
android:id="@+id/cart_item_checkbox"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="0.40"
android:scaleY="0.40"
android:button="@drawable/cart_checkbox_selector"/>
<ImageView
android:layout_marginLeft="10dp"
android:id="@+id/cart_product_image"
android:layout_gravity="center_vertical"
android:layout_width="80dp"
android:layout_height="80dp" />
<RelativeLayout
android:padding="10dp"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/cart_product_name"
android:layout_width="wrap_content"
android:maxLines="2"
android:ellipsize="end"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#1d1d1d"
android:text="iPhone7 128G xxxxxxxxxxx xxx"/>
<TextView
android:id="@+id/cart_ProductTotal_qty"
android:layout_marginTop="15dp"
android:layout_below="@+id/cart_product_name"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Total:750"/>
<TextView
android:layout_alignParentRight="true"
android:layout_alignBaseline="@+id/cart_ProductTotal_qty"
android:id="@+id/cart_ProductRemaining_qty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
android:text="Left:95"/>
<LinearLayout
android:layout_below="@+id/cart_ProductTotal_qty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal"
android:background="@drawable/counter_stroke_border">
<ImageView
android:id="@+id/cartDecrementImg"
android:layout_margin="10dp"
android:layout_gravity="center_vertical"
android:layout_width="15dp"
android:layout_height="15dp"
android:background="@drawable/minus_decrement"/>
<View
android:layout_width="0.6dp"
android:layout_height="match_parent"
android:background="#8d8d8d"></View>
<EditText
android:id="@+id/cartBetCoinValue"
android:layout_width="70dp"
android:layout_gravity="center_vertical"
android:focusableInTouchMode="true"
android:layout_height="wrap_content"
android:textColor="#EF4836"
android:ellipsize="start"
android:gravity="center_horizontal"
android:text="1"
android:inputType="number"
android:singleLine="true"
android:background="@android:color/transparent"/>
<View
android:layout_width="0.6dp"
android:layout_height="match_parent"
android:background="#8d8d8d"></View>
<ImageView
android:id="@+id/cartIncrementImg"
android:layout_margin="10dp"
android:layout_gravity="center_vertical"
android:layout_width="15dp"
android:layout_height="15dp"
android:background="@drawable/plus_increment"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
修改您的代码,如下所示:
@Override
public void onBindViewHolder(...) {
...
...
if(//condition for visibility) {
checkbox.setVisibility(View.VISIBLE);
} else {
checkbox.setVisibility(View.GONE);
}
}
Run Code Online (Sandbox Code Playgroud)
在活动内部修改数据集,即cartItemDetailList
并调用 yourAdapter.notifyDataSetChanged();
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |