- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
引入了一些代码,使我的 PostAdapter
在我登录时返回错误的 postid
,并且 post
不被喜欢。 .我不知道如何解决它。应用程序没有崩溃或发生任何问题,但我不确定如何修复它。
Post 有三个 ImageView
,当单击它们时,它们会改变颜色。之前的情况按预期发生,但现在它不起作用...应用程序不会崩溃,就像我说的,但当我登录它时,我得到了错误的 postid
。
点赞不会被保存到正确的帖子中,评论也不会被记录。
谁能告诉我为什么会发生这种情况?
PostAdapter
public class PostAdapter extends RecyclerView.Adapter<PostAdapter.ViewHolder> {
public Context mContext;
public List<Post> mPost;
public Post post;
private FirebaseUser firebaseUser;
public PostAdapter(Context mContext, List<Post> mPost) {
this.mContext = mContext;
this.mPost = mPost;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.post_item, parent, false);
return new PostAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
post = mPost.get(position);
Glide.with(mContext).load(post.getPostimage())
.apply(new RequestOptions().placeholder(R.drawable.placeholderimg))
.into(holder.post_image);
if ("".equals(post.getDescription())) {
holder.description.setVisibility(View.GONE);
} else {
holder.description.setVisibility(View.VISIBLE);
holder.description.setText(post.getDescription());
}
//Timestamp holder
if ("".equals(post.getTimestamp())) {
holder.timestamp.setVisibility(View.GONE);
} else {
holder.timestamp.setVisibility(View.VISIBLE);
String timestampDifference = getTimeDate();
if (!timestampDifference.equals("0")) {
holder.timestamp.setText(timestampDifference + " days ago");
} else {
holder.timestamp.setText("Today");
}
}
if ("".equals(post.getText_event())) {
holder.text_event.setVisibility(View.GONE);
} else {
holder.text_event.setVisibility(View.VISIBLE);
holder.text_event.setText(post.getText_event());
}
if ("".equals(post.getText_location())) {
holder.text_location.setVisibility(View.GONE);
} else {
holder.text_location.setVisibility(View.VISIBLE);
holder.text_location.setText(post.getText_location());
}
if ("".equals(post.getText_date_time())) {
holder.text_date_time.setVisibility(View.GONE);
} else {
holder.text_date_time.setVisibility(View.VISIBLE);
holder.text_date_time.setText(post.getText_date_time());
}
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.like.getTag().equals("like")) {
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid())
.child(firebaseUser.getUid()).setValue(true);
addNotification(post.getPublisher(), post.getPostid());
} else {
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid())
.child(firebaseUser.getUid()).removeValue();
}
}
});
publisherInfo(holder.image_profile, holder.username, post.getPublisher());
attending_event(post.getPostid(), holder.attend_event);
number_of_people_attending_event(holder.number_of_people_attending_event, post.getPostid());
getComments(post.getPostid(), holder.number_of_comments);
getTimeDate();
isSaved(post.getPostid(), holder.save_event);
eventLiked(post.getPostid(), holder.like);
number_of_likes(holder.number_of_likes, post.getPostid());
holder.image_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
editor.putString("profileid", post.getPublisher());
editor.apply();
((FragmentActivity) mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
}
});
holder.username.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
editor.putString("profileid", post.getPublisher());
editor.apply();
((FragmentActivity) mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
}
});
holder.post_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
editor.putString("postid", post.getPostid());
editor.apply();
((FragmentActivity) mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new PostDetailFragment()).commit();
}
});
holder.save_event.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.save_event.getTag().equals("save")) {
FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid())
.child(post.getPostid()).setValue(true);
} else {
FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid())
.child(post.getPostid()).removeValue();
}
}
});
//Setting ViewHolder for the attend_event icon (black)
holder.attend_event.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("POSTID", post.getPostid());
if (holder.attend_event.getTag().equals("attend event")) {
FirebaseDatabase.getInstance().getReference().child("Attending Event").child(post.getPostid())
.child(firebaseUser.getUid()).setValue(true);
} else {
FirebaseDatabase.getInstance().getReference().child("Attending Event").child(post.getPostid())
.child(firebaseUser.getUid()).removeValue();
}
}
});
holder.comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, CommentsActivity.class);
intent.putExtra("postid", post.getPostid());
intent.putExtra("publisherid", post.getPublisher());
mContext.startActivity(intent);
}
});
holder.number_of_comments.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, CommentsActivity.class);
intent.putExtra("postid", post.getPostid());
intent.putExtra("publisherid", post.getPublisher());
mContext.startActivity(intent);
}
});
holder.number_of_likes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, FollowersActivity.class);
intent.putExtra("id", post.getPostid());
intent.putExtra("title", "Likes");
mContext.startActivity(intent);
}
});
holder.more_options.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mContext, v);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.edit_event:
editPost(post.getPostid());
return true;
case R.id.delete_event:
FirebaseDatabase.getInstance().getReference("Posts").child(post.getPostid()).removeValue()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(mContext, "Event deleted", Toast.LENGTH_SHORT).show();
}
}
});
return true;
case R.id.report_event:
Toast.makeText(mContext, "Event has been reported", Toast.LENGTH_SHORT).show();
return true;
default:
return false;
}
}
});
popupMenu.inflate(R.menu.event_menu);
if (!post.getPublisher().equals(firebaseUser.getUid())) {
popupMenu.getMenu().findItem(R.id.edit_event).setVisible(false);
popupMenu.getMenu().findItem(R.id.delete_event).setVisible(false);
}
popupMenu.show();
}
});
}
@Override
public int getItemCount() {
if (mPost != null) {
return mPost.size();
} else {
return 0;
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView image_profile, post_image, like, comment, attend_event, save_event, more_options;
public TextView username;
public TextView number_of_likes;
public TextView description;
public TextView number_of_comments;
public TextView text_event;
public TextView text_location;
public TextView text_date_time;
public TextView timestamp;
public TextView number_of_people_attending_event;
public ViewHolder(@NonNull View itemView) {
super(itemView);
image_profile = itemView.findViewById(R.id.image_profile);
post_image = itemView.findViewById(R.id.post_image);
like = itemView.findViewById(R.id.like);
comment = itemView.findViewById(R.id.comment);
username = itemView.findViewById(R.id.username);
number_of_likes = itemView.findViewById(R.id.number_of_likes);
description = itemView.findViewById(R.id.description);
number_of_comments = itemView.findViewById(R.id.number_of_comments);
text_event = itemView.findViewById(R.id.text_event);
text_location = itemView.findViewById(R.id.text_location);
text_date_time = itemView.findViewById(R.id.text_date_time);
attend_event = itemView.findViewById(R.id.attend_event);
number_of_people_attending_event = itemView.findViewById(R.id.number_of_people_attending_event);
save_event = itemView.findViewById(R.id.save_event);
more_options = itemView.findViewById(R.id.more_options);
timestamp = itemView.findViewById(R.id.timestamp);
text_location.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, MapsActivityUser.class);
intent.putExtra("postid", mPost.get(getAdapterPosition()).getPostid());
intent.putExtra("text_event", mPost.get(getAdapterPosition()).getText_event());
intent.putExtra("text_location", mPost.get(getAdapterPosition()).getText_location());
intent.putExtra("text_date_time", mPost.get(getAdapterPosition()).getText_date_time());
mContext.startActivity(intent);
}
});
}
}
private void eventLiked(String postid, final ImageView imageView) {
if (postid != null) {
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(postid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child(firebaseUser.getUid()).exists()) {
imageView.setImageResource(R.drawable.ic_event_liked_aqua_fill);
imageView.setTag("liked");
} else {
imageView.setImageResource(R.drawable.ic_favorite_heart_hollow);
imageView.setTag("like");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
private void isSaved(final String postid, final ImageView imageView) {
if (firebaseUser.getUid() != null) {
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid());
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (postid != null) {
if (dataSnapshot.child(postid).exists()) {
imageView.setImageResource(R.drawable.ic_bookmark_darker_version);
imageView.setTag("saved");
} else {
imageView.setImageResource(R.drawable.ic_save_hollow);
imageView.setTag("save");
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
最佳答案
问题出在
public Post post;
每当呈现一行时,它的值就会分配给这一行。当用户点击另一行时,适配器仍然使用此帖子来获取 id。
只需删除帖子并使用位置即可访问用户刚刚点击的项目。
关于java - PostAdapter 返回错误的帖子 postid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60119338/
引入了一些代码,使我的 PostAdapter 在我登录时返回错误的 postid,并且 post 不被喜欢。 .我不知道如何解决它。应用程序没有崩溃或发生任何问题,但我不确定如何修复它。 Post
如果我想将 postid 从 posts 表插入 star_ ratings 表,是否有比这更好的方式编写查询star_atings 表中不存在 postid。 INSERT INTO star_ra
我正在努力学习如何根据他们的文档制作我自己的 Tumblr 主题 http://www.tumblr.com/docs/en/custom_themes . 在我不想要的每篇帖子上都有一个数字(或文档
我正在通过 Android 中的共享对话框在 FB 上共享视频。共享工作得很好。但是,FB post id 返回 null。回调甚至在视频上传之前就返回了。如果我遗漏了什么,请告诉我。下面是我的代码。
我正在使用 firebase 函数并已成功运行清理函数。 我遇到的问题是我的 firebase 数据库看起来像这样。 ABC123 和 0l692lPD6EfqUZ4Y4xiCOVmnNmC2 都是在
我正在制作一个 Cordova 应用程序,我需要获取 WordPress 网站的 postID。我做了一些研究,发现我应该使用内置的 url_to_postid 函数。但是,由于这是一个 cordov
如何在使用 meteor-autoform 时将添加 postId 链接到评论? 我试过了 AutoForm.hooks({ insertCommentForm: { formToDoc:
所以我将使用带有帖子和评论的博客数据库模型的陈词滥调示例。 public class Post { public int Id { get; set; } public string Titl
我正在尝试在 didSelect 上设置所选 MapKit 的注释 ID(在我的例子中为 mapEventID),并在 Swift 准备转场时使用: override func prepare(for
我已经从我的 Android 应用分享了一个 url 到 FB: 然后我将 postId 保存在一边(硬编码) 我尝试对那个帖子做“fb like” 使用这段代码,却报错: Button social
我正在尝试使用 $remove 删除数组元素。但它说 this.posts.$remove 不是函数。谁能解释我哪里错了? Xxx vue 实例: deletePost(postId){
我尝试获取API路由中的postID,如下所示,但不正确:。任何帮助都将不胜感激。
我尝试获取API路由中的postID,如下所示,但不正确:。任何帮助都将不胜感激。
我尝试使用以下逻辑通过 GTM 添加 InRead 广告: function set_ad_player(){ var el = document.querySelector('section[
我就面临这样的情况。我想插入这样的数据库: INSERT INTO `mytable` (`id`, `post_id`, `user_id`, `dtime`) VALUES ('','$pid',
首先,请原谅我的白痴问题。我正在搭建一个博客平台,一切顺利,但我对PHP的$_GET方法完全不熟悉。 我想做的是像这样:当一个人去 http://link.dom/blog.php?postid =
我正在尝试从我的 Android 应用程序向给定的 postId = 10154194181895153 发布一个 facebook。 我已经阅读了很多这样做的方法。 但是他们每个人都返回了一个fb响
如果没有自动表单,通常我们会执行以下操作来提交评论: 评论提交.js 'submit form': function(e, template) { e.preventDefault();
我有一个用于跟踪收藏夹的数据库 [ID] [PostID] [userID] [DateFavorited] 我正在尝试在 Linq 中编写一个 Entity Framework 查询,以获取该数据库
我是一名优秀的程序员,十分优秀!