我试图改变我的设备的图像资源在回收视图中的特定位置,每当我点击它(点击图像,而不是项目)。我试图把setOnClickListener()放在onBindViewHolder()方法中,但只有最后一项受到影响。这是我的回收器视图
这里是我的适配器:
public class Device_RV_Adapter extends RecyclerView.Adapter<Device_View_Holder> {
List<Device_Data> list= Collections.emptyList();
Context context;
public Device_RV_Adapter(List<Device_Data> list,Context context){
this.list=list;
this.context = context;
}
@Override
public Device_View_Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.device_row_layout,parent,false);
Device_View_Holder holder = new Device_View_Holder(v);
return holder;
}
@Override
public void onBindViewHolder(final Device_View_Holder holder, final int position) {
holder.device_id.setText(list.get(position).device_id);
holder.home.setText(list.get(position).home_id);
holder.room.setText(list.get(position).room);
holder.current.setText(list.get(position).current);
holder.switch_key.setImageResource(list.get(position).switch_key);
holder.device.setTag(position);
holder.device.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = (int)v.getTag();
if(list.get(pos).flag==true){
list.get(pos).flag = false;
}
else if(list.get(pos).flag==false){
list.get(pos).flag = true;
}
notifyDataSetChanged();
}
});
if(list.get(position).flag == true)
holder.device.setImageResource(R.drawable.fan_off);
else if(list.get(position).flag==false)
holder.device.setImageResource(R.drawable.fan_on);
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView){
super.onAttachedToRecyclerView(recyclerView);
}
public void insert(int position,Device_Data device_data){
list.add(position,device_data);
notifyItemInserted(position);
}
public void remove(Device_Data device_data){
int position = list.indexOf(device_data);
list.remove(position);
notifyItemRemoved(position);
}
我的观众:
public class Device_View_Holder extends RecyclerView.ViewHolder{
CardView cv;
TextView device_id,home,room,current;
public static ImageView device, switch_key;
boolean flag;
public Device_View_Holder(View itemView) {
super(itemView);
cv=(CardView)itemView.findViewById(R.id.device_cv);
device_id=(TextView)itemView.findViewById(R.id.device_id);
home=(TextView)itemView.findViewById(R.id.home_id);
room=(TextView)itemView.findViewById(R.id.room);
current=(TextView)itemView.findViewById(R.id.current);
device=(ImageView)itemView.findViewById(R.id.device_img);
switch_key=(ImageView)itemView.findViewById(R.id.switch_key);
}
我的数据类:
public class Device_Data {
public String device_id,home_id,room,current;
public int device,switch_key;
boolean flag;
public Device_Data(String device_id, String home_id, String room, String current,int device,int switch_key,boolean flag){
this.device_id=device_id;
this.home_id=home_id;
this.room=room;
this.current=current;
this.device=device;
this.switch_key=switch_key;
this.flag=flag;
}
当我点击设备的图像时,如果它处于打开状态(flag=true),则更改为“fan_off”。如果关闭,请切换到“fan_on”。就像一个开关。有人能帮我解决这个问题吗?提前谢谢。。。
首先,对于onBindViewHolder()
中的循环,不需要这样做,因为这个方法是为列表中的所有项调用的,您不必再次为所有项显式运行循环。
替换这段代码:
for(int i=0;i<list.size();i++){
if(position==i){
holder.device.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(list.get(position).flag==true)
holder.device.setImageResource(R.drawable.fan_off);
else if(list.get(position).flag==false){
holder.device.setImageResource(R.drawable.fan_on);
}
}
});
}
}
有了这个:
// here setTag is used to attach the position with each view being inflated.
holder.device.setTag(position);
holder.device.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = (int)v.getTag();
if(list.get(pos).flag==true){
list.get(pos).flag = false;
}
else{
list.get(pos).flag = true;
}
notifyDataSetChanged();
}
});
if(list.get(position).flag == true)
holder.device.setImageResource(R.drawable.fan_off);
else
holder.device.setImageResource(R.drawable.fan_on);
我们在这里检查标志是真是假,当用户单击按钮时,相应地更改值,以便在调用notifyDataSetChanged()时,它用新更改的标志值填充视图,从而选择或取消选择相关视图。
我有一个图像视图和一堆图像,但问题是我想一个接一个地显示图像视图中的所有图像,图像应该像gif动画一样每秒钟或每0.2秒改变一次。
我对javafx非常陌生。我正试图用scene builder创建一个有趣的纸牌游戏应用程序,但在更改ImageView组件的图像时遇到了问题。 src文件夹包含两个包,一个用于所有图像,另一个包含所有代码。 在控制器类中,我尝试使用以下多种组合来更改图像,其中卡是组件,它与中的匹配:
我正在尝试创建以下图库: -一个大图像 -下面图库图像的缩略图 -大图像应在lightbox图库中单击后打开所有图像 我让lightbox画廊使用PhotoSwipe工作,当我点击大图像时,它就会触发。我也有缩略图在大图像下面的地方。我现在的问题是,当我单击其中一个缩略图时,我如何改变大图像?我见过很多例子(也是相当简单的例子),但在我的案例中似乎没有一个行得通。 下面是我为缩略图准备的代码: 我
所以我从昨天开始就一直在使用Javascript(Vue)和html(所以请原谅我的困惑),我不知道如何在更改链接的同时更改“home”链接描述旁边的图像的颜色。 我试过使用CSS类,它工作,但只改变图像颜色时,你实际上悬停在图像上,而不是整个链接线。除了CSS之外,我也尝试过通过“onmouseover”将图像改变为彩色版本,但不知怎么的,这将图标立即改变为彩色版本(?)。我猜问题是我通过一个:
我的代码出错了。为什么胡虎123123
当我点击图库中的不同图片时,如何让图片和图片下的文本互换? 我想有4个缩略图图像交换到一个放大的图像时,点击,每显示一个不同的描述下的放大的每一个图像。我已经设法使图像交换,但我不知道从哪里开始与文本部分。 我也希望有标题/链接旁边的每一个图像,可以点击改变图像和文本下的图像。 代码在下面和这个JSfiddle链接中:https://jsfidle.net/hzjk077t/ HTML CSS J