gpt4 book ai didi

android - 如何控制 recyclerview 中的其他项目?

转载 作者:行者123 更新时间:2023-11-29 15:37:40 25 4
gpt4 key购买 nike

我有一个水平的recyclerView,当我点击每个元素时,它里面有一个LinearLayout setVisibility(VISIBLE),这个工作很好。

所以我现在想要的是,当我点击当前项目时,LinearLayout setVisibilty(VISIBLE)(像往常一样)同时,如果我点击另一个项目之前,LinearLayout 在里面 setVisibility(GONE)

到目前为止我尝试了什么

 viewHolder.container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(viewHolder.linearLayout.getVisibility() == View.VISIBLE){
//hide
viewHolder.linearLayout.setVisibility(View.GONE);
}else{
int nowClickedId = 0;
//hide LinearLayout of other position that clicked before
if(nowClickedId != position){
viewHolder.linearLayout.setVisibility(View.GONE);
}

//show for current clicked item
viewHolder.linearLayout.setVisibility(View.VISIBLE);

//get current item position store at the array
nowClickedId = viewHolder.getAdapterPosition();
}
}
});

目前我只控制了当前位置的item,如何获取之前点击的item的控制权?

最佳答案

创建一个变量来存储点击的项目的位置并在全局声明。

private int nowclicked=-1;

现在在您的 viewholder 中,无论何时单击位置,都将其存储到全局变量并调用 notifyDataSetChanged(),它会通知适配器数据已更改。

private class Sample extends RecyclerView.ViewHolder{

public Sample(View itemView) {
super(itemView);

viewHolder.container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nowclicked = getAdapterPosition();
notifyDataSetChanged();

}
});
}
}

onBindViewHolder 中如果位置相等则显示 linearLayout 否则隐藏它。

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

if(nowclicked==position){
viewHolder.linearLayout.setVisibility(View.VISIBLE);
}else {
viewHolder.linearLayout.setVisibility(View.GONE);
}
}

关于android - 如何控制 recyclerview 中的其他项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46468968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com