0

Hi to all stackoverflow family.

I begin to learn android OS system for development some project and I can do it.

I have an example project and I'm fetching some data. Everything is okay but I want to do this if it's possible.

I'm using sqlite and I'm adding some items in. I want to remove if sqlite items will equal to arraylist onBindViewHolder belong.

My ArrayAdapter:

public void onBindViewHolder(@NonNull final UserViewHolder holder, final int i) {
    //Setting user profile pic with picasso
    holder.username.setText(users.get(i).getUsername());
    Picasso.with(holder.imageView.getContext())
            .load(users.get(i).getProfile_pic_url())
            .placeholder(R.drawable.ic_profile)
            .error(R.drawable.ic_profile)
            .into(holder.imageView);

    //Remove item if button cliked
    holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final int position = holder.getAdapterPosition();
            removeItem(position);
        }
    });
}

I tried this but it doesn't work:

public void onBindViewHolder(@NonNull final UserViewHolder holder, final int i) {

    //Removing user which in white list
    settings = holder.layout.getContext().getSharedPreferences("INSTAGRAM_UNFOLLOWERS", Context.MODE_PRIVATE);
    settings.edit();
    String current_user = settings.getString("username", "");

    DBWhiteHelper dbWhiteHelper = new DBWhiteHelper(holder.layout.getContext());
    if(users.get(i).getUsername().contains(dbWhiteHelper.WhiteList(current_user).get(i).getUsername())){
        users.remove(i);
        notifyDataSetChanged();
    }

    //Setting user profile pic with picasso
    holder.username.setText(users.get(i).getUsername());
    Picasso.with(holder.imageView.getContext())
            .load(users.get(i).getProfile_pic_url())
            .placeholder(R.drawable.ic_profile)
            .error(R.drawable.ic_profile)
            .into(holder.imageView);

    //Remove item if button clicked
    holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            final int position = holder.getAdapterPosition();
            removeItem(position);
        }
    });
}

I also tried many things from StackOverflow but nothing worked.

What can I do, anymore ideas?

TofferJ
  • 4,678
  • 1
  • 37
  • 49

1 Answers1

0

Use this method

public void removeItem(int pos) {
mDataset.remove(pos);
notifyItemRemoved(pos);
notifyItemRangeChanged(pos, users.size());
}

I think it will be helpful.

Sana
  • 456
  • 3
  • 9