可以删除适配器onBindViewHolder所属的项目吗?

时间:2018-09-10 16:03:04

标签: java android

您好,所有stackoverflow系列产品。

我开始为android的一些项目学习development操作系统,我可以做到。

我有一个示例project,我正在获取一些data。一切都很好,但我想尽可能做到这一点。

我正在使用sqlite,并且要添加一些项。如果sqlite项等于arraylist onBindViewHolder的项,我想删除。

我的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);
        }
    });
}

我尝试了此操作,但没有用:

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);
        }
    });
}

我还尝试了StackOverflow的许多方法,但没有任何效果。

我能做什么,还有更多想法吗?

1 个答案:

答案 0 :(得分:0)

使用此方法

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

我认为这会有所帮助。