问题描述
从FavDetailActivity转到“收藏夹活动”时,我的“收藏夹活动”上的RecyclerView没有更新
当我打开图像而不喜欢它时,当我返回“收藏夹活动”时,它不会更新。仅当我切换到其他活动并返回时,它才会更新。
以下是互动的记录:https://drive.google.com/file/d/1SUAjY6fEHTmU-JKPyM4Bq6m5kE-CQCtv/view
这是我的FavDetailActivity ---
public class FavDetailActivity extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
public ArrayList<FavItem> data1 = new ArrayList<>();
int pos1;
private ViewPager mViewPager;
FavAdapter favAdapter;
public static String image;
public static String key_id1;
public static String selectedImage1;
public static String title;
FavDB favDB;
ImageView favButton;
String favstatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = this.getSharedPreferences("prefs",this.MODE_PRIVATE);
boolean firstStart = prefs.getBoolean("firstStart",true);
if (firstStart) {
createTableOnFirstStart();
}
setContentView(R.layout.activity_fav_detail);
favDB = new FavDB(this);
favAdapter = new FavAdapter(this,data1);
data1 = getIntent().getParcelableArrayListExtra("data1");
pos1 = getIntent().getIntExtra("pos1",0);
setTitle(data1.get(pos1).getItem_title());
image = data1.get(pos1).getItem_image();
title = data1.get(pos1).getItem_title();
key_id1 = data1.get(pos1).getKey_id();
favstatus = data1.get(pos1).getFavstatus();
favButton = findViewById(R.id.favButton2);
selectedImage1 = image;
readCursorData(key_id1);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(),data1);
mViewPager = (ViewPager) findViewById(R.id.container1);
mViewPager.setPageTransformer(true,new DepthPageTransformer());
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setCurrentItem(pos1);
mViewPager.addOnPagechangelistener(new ViewPager.OnPagechangelistener() {
@Override
public void onPageScrolled(int position,float positionOffset,int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
setTitle(data1.get(position).getItem_title());
image = data1.get(position).getItem_image();
selectedImage1 = image;
pos1 = position;
key_id1 = data1.get(position).getKey_id();
title = data1.get(position).getItem_title();
favstatus = data1.get(position).getFavstatus();
readCursorData(key_id1);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
favButton.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference refLike = FirebaseDatabase.getInstance().getReference().child("likes");
final DatabaseReference upVotesRefLike = refLike.child(key_id1);
if (favstatus.equals("0")) {
favstatus = "1";
favDB.insertIntoTheDatabase(title,image,key_id1,favstatus);
favButton.setBackgroundResource(R.drawable.ic_favorite_red_24dp);
try {
data1.remove(pos1);
Favourites.recyclerView.getAdapter().notifyItemRemoved(pos1);
Favourites.recyclerView.getAdapter().notifyItemRangeChanged(pos1,data1.size());
mSectionsPagerAdapter.notifyDataSetChanged();
} catch (Exception e) {
e.printstacktrace();
}
upVotesRefLike.runTransaction(new Transaction.Handler() {
@NonNull
@Override
public Transaction.Result doTransaction(@NonNull final MutableData mutableData) {
try {
Integer currentValue = mutableData.getValue(Integer.class);
if (currentValue == null) {
mutableData.setValue(1);
} else {
mutableData.setValue(currentValue + 1);
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
}
});
}
} catch (Exception e) {
throw e;
}
return Transaction.success(mutableData);
}
@Override
public void onComplete(@Nullable DatabaseError databaseError,boolean b,@Nullable DataSnapshot dataSnapshot) {
System.out.println("Transaction completed");
}
});
} else if (favstatus.equals("1")) {
favstatus = "0";
favDB.remove_fav(key_id1);
favButton.setBackgroundResource(R.drawable.ic_favorite_shadow_24dp);
favAdapter.notifyItemRemoved(pos1);
data1.remove(pos1);
favDB.remove_fav(key_id1);
Favourites.recyclerView.getAdapter().notifyDataSetChanged();
mSectionsPagerAdapter.notifyDataSetChanged();
}
}
});
}
}
这是我的收藏夹活动---
public class Favourites extends AppCompatActivity {
public static RecyclerView recyclerView;
private FavDB favDB;
private ArrayList<FavItem> favItemList = new ArrayList<>();
private FavAdapter favAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_favourites);
favDB = new FavDB(this);
favAdapter = new FavAdapter(this,favItemList);
recyclerView = findViewById(R.id.favRecyclerView1);
recyclerView.setLayoutManager(new GridLayoutManager(this,2));
recyclerView.setAdapter(favAdapter);
loadData();
}
private void loadData() {
favItemList.clear();
favAdapter.notifyDataSetChanged();
sqliteDatabase db = favDB.getReadableDatabase();
Cursor cursor = favDB.select_all_favorite_list();
try {
while (cursor.movetoNext()) {
String title = cursor.getString(cursor.getColumnIndex(FavDB.ITEM_TITLE));
String id = cursor.getString(cursor.getColumnIndex(FavDB.KEY_ID));
String image = (cursor.getString(cursor.getColumnIndex(FavDB.ITEM_IMAGE)));
String favstatus = (cursor.getString(cursor.getColumnIndex(FavDB.FAVORITE_STATUS)));
FavItem favItem = new FavItem(title,id,favstatus);
favItemList.add(favItem);
favAdapter.notifyDataSetChanged();
}
} finally {
if (cursor != null && cursor.isClosed())
cursor.close();
db.close();
}
favAdapter.notifyDataSetChanged();
}
}
这是我的收藏夹---
public class FavAdapter extends RecyclerView.Adapter<FavAdapter.ViewHolder> {
private Context context;
private ArrayList<FavItem> favItemList;
private FavDB favDB;
private DatabaseReference refLike;
public FavAdapter(Context context,ArrayList<FavItem> favItemList) {
this.context = context;
this.favItemList = favItemList;
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fav_item,parent,false);
favDB = new FavDB(context);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,final int position) {
holder.favTextView.setText(favItemList.get(position).getItem_title());
Glide.with(context).load(favItemList.get(position).getItem_image()).into(holder.favImageView);
favItemList.get(position).setFavstatus("1");
holder.favCardView.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context,FavDetailActivity.class);
intent.putParcelableArrayListExtra("data1",favItemList);
intent.putExtra("pos1",position);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return favItemList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView favTextView;
ImageView favBtn;
ImageView favImageView;
CardView favCardView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
favTextView = itemView.findViewById(R.id.favTextView);
favBtn = itemView.findViewById(R.id.favBtn);
favImageView = itemView.findViewById(R.id.favImageView);
favCardView = itemView.findViewById(R.id.favCardView);
refLike = FirebaseDatabase.getInstance().getReference().child("likes");
favBtn.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = getAdapterPosition();
final FavItem favItem = favItemList.get(position);
final DatabaseReference upVotesRefLike = refLike.child(favItemList.get(position).getKey_id());
favDB.remove_fav(favItem.getKey_id());
removeItem(position);
upVotesRefLike.runTransaction(new Transaction.Handler() {
@NonNull
@Override
public Transaction.Result doTransaction(@NonNull final MutableData mutableData) {
try {
Integer currentValue = mutableData.getValue(Integer.class);
if (currentValue == null) {
mutableData.setValue(1);
} else {
mutableData.setValue(currentValue - 1);
}
} catch (Exception e) {
throw e;
}
return Transaction.success(mutableData);
}
@Override
public void onComplete(@Nullable DatabaseError databaseError,@Nullable DataSnapshot dataSnapshot) {
System.out.println("Transaction completed");
}
});
}
});
}
}
private void removeItem(int position) {
favItemList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position,favItemList.size());
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)