selected Image button changes its position in recyclerView when scrolling

萝らか妹 提交于 2019-12-01 23:22:58

Instead of placing isButtonClicked in adapter class place it in MovieData modal class.Then make following changes in your adapter class:

public class SuggestionListItemAdapter extends RecyclerView.Adapter<SuggestionListItemAdapter.MyViewHolder> {
private List<MovieData> moviesList;
Context context;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView  person_name;
    ImageView person_photo;
    ImageButton person_follow;
    public MyViewHolder(View view) {
        super(view);
        person_photo = (ImageView) view.findViewById(R.id.person_photo);
        person_name = (TextView) view.findViewById(R.id.person_name);
        person_follow = (ImageButton) view.findViewById(R.id.btnfollow);
    }
}
public SuggestionListItemAdapter(Context mContext,List<MovieData> moviesList) {
    this.moviesList = moviesList;
    this.context=mContext;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.recyclerview_list_items, parent, false);

    MyViewHolder viewHolder = new MyViewHolder(v);

    return viewHolder;
}

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    final MovieData movieData = moviesList.get(position);

    holder.person_name.setText(movieData.getGenre());
    holder.person_photo.setImageResource(movieData.getPhoto());
    holder.person_follow.setBackgroundResource(movieData.isButtonClicked() ? R.drawable.following_img : R.drawable.follow_inactive);
    holder.person_follow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            movieData.setIsButtonClicked(!movieData.isButtonClicked());
            holder.person_follow.setBackgroundResource(movieData.isButtonClicked() ? R.drawable.following_img : R.drawable.follow_inactive);
        }
    });
    holder.person_follow.setTag(holder);
}

@Override
public int getItemCount() {
    return moviesList.size();
}

}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!