Android 单击文本时,更改片段中RecyclerView中每个项目的视图可见性

Android 单击文本时,更改片段中RecyclerView中每个项目的视图可见性,android,android-recyclerview,adapter,visibility,Android,Android Recyclerview,Adapter,Visibility,我有一个片段,它包含一个带有退出按钮的布局标题,一个标题文本和一个可点击的编辑文本 在标题布局下方,我有一个RecyclerView,它在宽度和高度上与父布局匹配 RecyclerView的每一行都有一个ImageView、一个标题文本、一个描述文本、一个价格文本和一个不可见的ImageView,用于从回收器中删除项目 因为我的编辑文本视图是在片段中声明的,所以我无法在适配器中获取ViewHolder以更改ImageView的可见性,如下所示: 我只想在按下编辑文本时使每一行的图像可见 以

我有一个片段,它包含一个带有退出按钮的布局标题,一个标题文本和一个可点击的编辑文本

在标题布局下方,我有一个RecyclerView,它在宽度和高度上与父布局匹配

RecyclerView的每一行都有一个ImageView、一个标题文本、一个描述文本、一个价格文本和一个不可见的ImageView,用于从回收器中删除项目

因为我的编辑文本视图是在片段中声明的,所以我无法在适配器中获取ViewHolder以更改ImageView的可见性,如下所示:

我只想在按下编辑文本时使每一行的图像可见

以下是适配器和ViewHolder代码:

public class BagItemsAdapter extends RecyclerView.Adapter<BagItemsAdapter.BagViewHolder> {

private List<BagItem> mBagList;
private Context mContext;
private String quantityPrefix, pricePrefix;

public BagItemsAdapter(Context context,List<BagItem> list)
{
    this.mBagList = list;
    this.mContext = context;
}

@Override
public BagViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.bag_shop_item_layout,parent,false);

    return new BagViewHolder(v);
}

@Override
public void onBindViewHolder(BagViewHolder holder, int position) {

    BagItem currentItem = mBagList.get(position);
    Picasso.with(mContext).load(currentItem.getItemImageUrl()).into(holder.bagItemImage);
    holder.bagItemTitleBrand.setText(currentItem.getItemBrandTitle());
    holder.bagItemDescription.setText(currentItem.getItemDescription());

    holder.removeBagItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });

}


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

class BagViewHolder extends RecyclerView.ViewHolder{

    @BindView(R.id.bag_item_image) ImageView bagItemImage;
    @BindView(R.id.remove_bag_item) ImageView removeBagItem;
    @BindView(R.id.bag_item_title_brand) TextView bagItemTitleBrand;
    @BindView(R.id.bag_item_description) TextView bagItemDescription;
    @BindView(R.id.bag_item_quantity) TextView bagItemQuantity;
    @BindView(R.id.bag_item_price) TextView bagItemPrice;
    @BindView(R.id.bag_item_product) TextView bagItemProduct;


    public BagViewHolder(View itemView) {
        super(itemView);
        ButterKnife.bind(this,itemView);
    }
                }
              }
非常感谢您的帮助!:)

  • 例如,首先在适配器类中创建一个布尔全局变量

    private boolean isVisible = false;
    
    adapter.setVisibility();
    
  • 例如,根据变量集onBindViewHolder中imageview的可见性

    if(isVisible){
      holder.removeBagItem.setVisibility(View.VISIBLE);
    }else{
      holder.removeBagItem.setVisibility(View.GONE);
    }
    
    public void setVisibility(){
      isVisible = true;
      this.notifyDataSetChanged();
    }
    
  • 例如,在公共方法上创建,该方法在适配器中设置imageView的可见性

    if(isVisible){
      holder.removeBagItem.setVisibility(View.VISIBLE);
    }else{
      holder.removeBagItem.setVisibility(View.GONE);
    }
    
    public void setVisibility(){
      isVisible = true;
      this.notifyDataSetChanged();
    }
    
  • 例如,从片段编辑文本中单击调用该适配器方法

    private boolean isVisible = false;
    
    adapter.setVisibility();
    
  • 例如,首先在适配器类中创建一个布尔全局变量

    private boolean isVisible = false;
    
    adapter.setVisibility();
    
  • 例如,根据变量集onBindViewHolder中imageview的可见性

    if(isVisible){
      holder.removeBagItem.setVisibility(View.VISIBLE);
    }else{
      holder.removeBagItem.setVisibility(View.GONE);
    }
    
    public void setVisibility(){
      isVisible = true;
      this.notifyDataSetChanged();
    }
    
  • 例如,在公共方法上创建,该方法在适配器中设置imageView的可见性

    if(isVisible){
      holder.removeBagItem.setVisibility(View.VISIBLE);
    }else{
      holder.removeBagItem.setVisibility(View.GONE);
    }
    
    public void setVisibility(){
      isVisible = true;
      this.notifyDataSetChanged();
    }
    
  • 例如,从片段编辑文本中单击调用该适配器方法

    private boolean isVisible = false;
    
    adapter.setVisibility();
    

  • 首先,您需要向
    BagItem
    添加一个新属性。我们称之为
    editMode

    class BagItem {
        boolean editMode;
    }
    
    最初,
    editMode
    为假。当用户按下编辑按钮时,您需要将
    editMode
    更改为true。确保您的
    mBagList
    设置为public。接下来,您需要通知recycler视图适配器数据已更改

    for (BagItem bagItem: bagItemsAdapter.mBagList) {
        bagItem.editMode = true;
    }
    bagItemsAdapter.notifyDataSetChanged();
    
    您还需要根据
    editMode
    值更新
    removeBagItem
    的可见性

    holder.removeBagItem.setVisibility(currentItem.editMode ? View.VISIBLE : View.GONE);
    

    首先,您需要向
    BagItem
    添加一个新属性。我们称之为
    editMode

    class BagItem {
        boolean editMode;
    }
    
    最初,
    editMode
    为假。当用户按下编辑按钮时,您需要将
    editMode
    更改为true。确保您的
    mBagList
    设置为public。接下来,您需要通知recycler视图适配器数据已更改

    for (BagItem bagItem: bagItemsAdapter.mBagList) {
        bagItem.editMode = true;
    }
    bagItemsAdapter.notifyDataSetChanged();
    
    您还需要根据
    editMode
    值更新
    removeBagItem
    的可见性

    holder.removeBagItem.setVisibility(currentItem.editMode ? View.VISIBLE : View.GONE);
    

    请提供适配器和视图持有者代码。还请提供片段类代码。请提供适配器和视图持有者代码。还请提供片段类代码