如何解决如何使用 recylerview 适配器中的共享首选项保存像 instagram 中喜欢和不喜欢 imageview 按钮的状态
我是 android 开发的新手。我正在为我的学习目的做一项任务。我有一个使用卡片视图布局的水平回收器视图。在卡片视图布局中,我使用的是 SmallBangView 动画库,就像 Instagram 中的心形图像。现在,当我按下心形图像时,它会变成红色,再次单击时它会变成白色。现在我想要做的是使用共享首选项在回收者视图的每个视图中保存心脏图像视图的状态,以便当我关闭应用程序时它应该记住按钮的状态。 这是我的回收器视图适配器代码,我在最后一个视图持有者类中使用它。请帮助我,我正在尝试这样做 3 天。仅使用共享首选项。 screenshot of view
Context context;
List<HorizontalModel> arrayList;
private boolean heartOnOff;
SmallBangView heart_imageView;
public HorizontalRecyclerViewAdapter(Context context,List<HorizontalModel> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@NonNull
@Override
public HorizontalRVViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_horizontal,parent,false);
return new HorizontalRecyclerViewAdapter.HorizontalRVViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull HorizontalRVViewHolder holder,int position) {
HorizontalModel movieModel = arrayList.get(position);
holder.movie_textView.setText(movieModel.getType());
holder.descripition_textView.setText(movieModel.getUser());
holder.like_textview.setText(String.valueOf(movieModel.getLikes()));
String imageUrl = movieModel.getUserImageURL();
Glide.with(context).load(imageUrl).fitCenter().into(holder.imageView);
holder.heart_imageView.setSelected(movieModel.liked);
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class HorizontalRVViewHolder extends RecyclerView.ViewHolder {
TextView movie_textView;
TextView descripition_textView;
ImageView imageView;
TextView like_textview;
SmallBangView heart_imageView;
public HorizontalRVViewHolder(@NonNull View itemView) {
super(itemView);
movie_textView = itemView.findViewById(R.id.movie_name);
descripition_textView = itemView.findViewById(R.id.movie_descripition);
imageView = itemView.findViewById(R.id.image_view);
like_textview = itemView.findViewById(R.id.textview);
heart_imageView = itemView.findViewById(R.id.imageViewAnimation);
heart_imageView.setonClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
HorizontalModel horizontalModel = arrayList.get(position);
if (heart_imageView.isSelected()) {
horizontalModel.liked = false;
heart_imageView.setSelected(false);
} else {
// if not selected only
// then show animation.
horizontalModel.liked = true;
heart_imageView.setSelected(true);
heart_imageView.likeAnimation();
}
}
});
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。