gpt4 book ai didi

android - 将项目保存为 "Favorite"并在其他回收站 View 中显示

转载 作者:行者123 更新时间:2023-11-30 01:04:04 25 4
gpt4 key购买 nike

我有 1 个 viewpager,有 2 个主要页面,收藏夹。两者都有 RecyclerViews,无限滚动,在 15 个项目之后它从服务器加载另外 15 个等等。我想实现一个选项,将 recyclerView 中的项目添加到收藏夹并刷新两个 recyclerView。如果添加了它们,我可以将它们添加到收藏夹或删除它们。我已经实现了这个并且它工作得很好。

问题是,如果我将项目添加到收藏夹,它不会刷新其他 RecyclerView。我有一个想法,每次我从收藏夹中添加或删除时,另一个 fragment 都会重新启动,因此它会从服务器请求另一个查询,而您只需将它们加载到回收器 View 中即可。它有效,但你总是被放在最前面,这不是一个好的用户体验。您可以打开项目并获取有关该项目的更多信息,并且可以将它们添加到该 Activity 中的收藏夹中。所以当我从那个 Activity 回来时,一切都保持不变,就像你没有将它们添加到收藏夹一样。但实际上你做到了。

我不知道如何解决这个问题:/其他人从服务器询问另一个查询,并将其加载到 RecylerView 中。如果我没有实现无限滚动,我可能可以共享两边的项目,但我必须有无限滚动,太多的数据会被浪费。

这是我的 RecyclerView 适配器的样子:

        customViewHolder.llLike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String fontAwesomeFullHeart = mContext.getString(R.string.fa_heart);
final String getLikeText = customViewHolder.tvPicLike.getText().toString();
if (getLikeText == fontAwesomeFullHeart) {
MyFunctions.showNotToFavoriteHeart(mContext, customViewHolder.tvPicLike, customViewHolder.tvLike);
API_Network_Service.serverRemoveFromFavorites(mContext, feedItem.getId(), logged_in, customViewHolder.tvPicLike);
} else {
MyFunctions.showFavoriteHeart(mContext, customViewHolder.tvPicLike, customViewHolder.tvLike);
API_Network_Service.serverAddToFavorites(mContext, feedItem.getId(), logged_in, customViewHolder.tvPicLike);
}
}
});

这是来自 API_SERVICE_CLASS:

   public static void serverAddToFavorites(final Context mContext, String apartment_id, RealmUser_Personal user, final TextView tvLike) {
String user_id = user.getId();
HashMap<String, String> map = new HashMap<>();
map.put("user_id", user_id);
HashMap<String, Object> mapMeta = new HashMap<>();
mapMeta.put("meta", map);
mapMeta.put("entry_id", apartment_id);
final ApiUporabnik apiService = ApiClient.getAPIUser().create(ApiUporabnik.class);
Call<FavoriteAdd> saveFavorite = apiService.favoriteAdd(API_KEY, mapMeta);
saveFavorite.enqueue(new Callback<FavoriteAdd>() {
@Override
public void onResponse(Call<FavoriteAdd> call, Response<FavoriteAdd> response) {
Log.d("Saved FAV", "");
//TODO Refresh item everywhere
}

@Override
public void onFailure(Call<FavoriteAdd> call, Throwable t) {
Log.e("E: Failed FAV", t.toString());
tvLike.setText(mContext.getString(R.string.fa_heart_o));
}
});
}

有什么想法、建议、解决方案吗?

最佳答案

如果我是你,我会执行以下步骤:

1- 创建一个数据库,其中包含收藏夹的 Id

2- 在您的主页中,adapter 检查是否添加到数据库中,像这样:

database.isFavoriteItems(Your_Items_ID);

3- 当点击最喜欢的Button 时,如果Not 存在于Database 中,则将新项目添加到Database如果以前添加过,请将其删除。

if(database.isFavoriteItem(Your_Items_ID)){
database.addToFavorite(Your_Items_ID);
} else {
database.removeFromFavorite(Your_Items_ID);
}

4- 当您滚动到 fragment 中的收藏夹列表时调用 notifyDataSetChanged 内部:

@Override
public void setUserVisibleHint(boolean visible){
super.setUserVisibleHint(visible);
if (visible){
adapter.notifyDataSetChanged();
}
}

5- 也让你的数据库 Singleton 真的值得推荐。

通过这些步骤,您的问题将得到解决。

关于android - 将项目保存为 "Favorite"并在其他回收站 View 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055231/

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