如何使用 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 (将#修改为@)