Android 单击文本时,更改片段中RecyclerView中每个项目的视图可见性
我有一个片段,它包含一个带有退出按钮的布局标题,一个标题文本和一个可点击的编辑文本 在标题布局下方,我有一个RecyclerView,它在宽度和高度上与父布局匹配 RecyclerView的每一行都有一个ImageView、一个标题文本、一个描述文本、一个价格文本和一个不可见的ImageView,用于从回收器中删除项目 因为我的编辑文本视图是在片段中声明的,所以我无法在适配器中获取ViewHolder以更改ImageView的可见性,如下所示: 我只想在按下编辑文本时使每一行的图像可见 以下是适配器和ViewHolder代码:Android 单击文本时,更改片段中RecyclerView中每个项目的视图可见性,android,android-recyclerview,adapter,visibility,Android,Android Recyclerview,Adapter,Visibility,我有一个片段,它包含一个带有退出按钮的布局标题,一个标题文本和一个可点击的编辑文本 在标题布局下方,我有一个RecyclerView,它在宽度和高度上与父布局匹配 RecyclerView的每一行都有一个ImageView、一个标题文本、一个描述文本、一个价格文本和一个不可见的ImageView,用于从回收器中删除项目 因为我的编辑文本视图是在片段中声明的,所以我无法在适配器中获取ViewHolder以更改ImageView的可见性,如下所示: 我只想在按下编辑文本时使每一行的图像可见 以
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();
if(isVisible){
holder.removeBagItem.setVisibility(View.VISIBLE);
}else{
holder.removeBagItem.setVisibility(View.GONE);
}
public void setVisibility(){
isVisible = true;
this.notifyDataSetChanged();
}
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();
if(isVisible){
holder.removeBagItem.setVisibility(View.VISIBLE);
}else{
holder.removeBagItem.setVisibility(View.GONE);
}
public void setVisibility(){
isVisible = true;
this.notifyDataSetChanged();
}
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);
请提供适配器和视图持有者代码。还请提供片段类代码。请提供适配器和视图持有者代码。还请提供片段类代码