gpt4 book ai didi

java - 如何在关闭 Activity 后立即从 Activity 中删除数据

转载 作者:行者123 更新时间:2023-12-02 01:55:52 25 4
gpt4 key购买 nike

我正在创建一个 Android 应用程序,每次我单击该项目时都会检索我通过 Intent 发送的数据。

我通过 Intent 发送检索到的数据(这是每次我单击项目时都会检索的子集合),并且所有数据都在数组列表中接收,因此监听器不知道是否存在相同的数据在数组列表中,因为数据在其他 Activity 中。

当我第一次单击时,数据在 ItemMarkerActivity 中正常显示,但是当我返回并再次单击同一个项目时,我在回收器 View 中再次看到数据加载,并添加到之前的相同数据中,我使用 onStop 删除数据的技术,但效果不佳,因为我需要关闭所有 Activity 才能看到数据已删除,我尝试通过 Intent 发送 CollectionReference 但我做不到。所以我需要一种在关闭 Activity 后立即删除数据的方法,如果有人有其他方法来解决这个问题那就更好了。

提前致谢

adapter.setOnItemClickListener(new MarketAdapterRecyclerView.OnItemClickListener() {
@Override
public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
CollectionReference path = documentSnapshot.getReference().collection("ShoppingItems");
listener = path.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if (e != null) {
return;
}

for (DocumentChange dc : queryDocumentSnapshots.getDocumentChanges()) {
if (dc.getType() == DocumentChange.Type.ADDED) {
item = dc.getDocument().toObject(Item.class);
itemList.add(item);
}
}

Intent intent = new Intent (shoppingActivity.this, ItemMarkerActivity.class);
Log.v(TAG,"###################################" + itemList.toString());
intent.putExtra("keyName", itemList);
startActivity(intent);
}
});
}
}

The Activity That Receives The data

The Manifest

public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> implements Parcelable{

public ArrayList<Item> ItemList;
public Context mContext;
private onMallListener mOnMallListener;





private static final int NO_POSITION = -1;

public ItemAdapter(ArrayList<Item> ItemList, Context mContext, onMallListener mOnMallListener) {

this.ItemList = ItemList;
this.mContext = mContext;
this.mOnMallListener = mOnMallListener;



}


protected ItemAdapter(Parcel in) {
ItemList = in.createTypedArrayList(Item.CREATOR);
}

public static final Creator<ItemAdapter> CREATOR = new Creator<ItemAdapter>() {
@Override
public ItemAdapter createFromParcel(Parcel in) {
return new ItemAdapter(in);
}

@Override
public ItemAdapter[] newArray(int size) {
return new ItemAdapter[size];
}
};

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.activity_card_view_item, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view, mOnMallListener);

return viewHolder;

}


@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {

Item item = ItemList.get(i);
viewHolder.itemType.setText(ItemList.get(i).getItemType());
Picasso.with(mContext)
.load(item.getImageUrl())
.fit()
.centerCrop().into(viewHolder.imageUrl);



}

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

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeTypedList(ItemList);
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

View mView;

public TextView price;
public TextView description;
public TextView itemType;
public ImageView imageUrl;
onMallListener onMallListener;




public ViewHolder(@NonNull View itemView, onMallListener mOnMallListener) {
super(itemView);
mView = itemView;

itemType = (TextView) mView.findViewById(R.id.card_view_image_title);
imageUrl = (ImageView) mView.findViewById(R.id.card_view_image);
this.onMallListener = mOnMallListener;

mView.setOnClickListener(this);





}

@Override
public void onClick(View v) {
if(mOnMallListener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
mOnMallListener.onMallClick(position);
}

}
}


}

public interface onMallListener{
void onMallClick(int position);

}

}

最佳答案

在第一个 Activity 中使用 Room 数据库保存数据,并在第二个 Activity 中检索数据。在代码的任何位置(以及任何 Activity 的回调中),您都可以清理数据库和监听此数据的所有列表/回收器。

https://developer.android.com/training/data-storage/room

希望对你有帮助

关于java - 如何在关闭 Activity 后立即从 Activity 中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57398496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com