可以在绑定视图持有人所属的适配器中删除项目吗?



嗨,所有堆栈溢出系列。

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

我有一个示例project,我正在获取一些data.一切都很好,但如果可能的话,我想这样做。

我正在使用sqlite,并且正在添加一些项目。如果sqlite项目等于arraylistonBindViewHolder,我想删除。

我的阵列适配器:

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的东西,但没有任何效果。

我能做什么,还有想法?

使用此方法

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

我认为这会有所帮助。

最新更新