有没有办法从您传递给 FireBasUI RecyclerAdapter 的 holder class 布局中删除视图?
Is there a way to remove a view from your holder class layout that you passed to the FireBasUI RecyclerAdapter?
看,这是我的问题:我使用了这个 FireBaseRecyclerViewAdapter,所以我可以上传并在我的 Homefragment 中显示我的 posts。但问题来了:我有一个布局,上面显示了图片 a 和文字。但是我也希望能够在没有图像的情况下显示 posts,所以我为每个 post 声明了一个名为 posttype 的变量,如果 posttype 为 0,则它是一个文本post否则就是图片post。问题是如何从支架上完全移除图像视图?
我试过了:
if(holder.textViewpostType.getText().equals("0")){
holder.ImageViewpicture.setImageDrawable(null);
}
但问题是 ImageView 仍然留在那里,只是看不见,但我希望它完全消失,你知道吗?
这是整个 PostsAdapter 的代码class快速回答会很有帮助谢谢:
package com.LiFit;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.squareup.picasso.Picasso;
import de.hdodenhof.circleimageview.CircleImageView;
public class PostsAdapter extends FirestoreRecyclerAdapter<Posts, PostsAdapter.PostsHolder> {
public PostsAdapter(@NonNull FirestoreRecyclerOptions<Posts> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull PostsHolder holder, int position, @NonNull Posts model) {
holder.textViewdescription.setText(model.getDescription());
holder.textViewpostType.setText(String.valueOf(model.getPostType()));
holder.textViewtime.setText("uploaded at "+model.getTime());
holder.textViewuid.setText(model.getUid());
holder.textViewusername.setText(model.getUsername());
holder.buttonlikes.setText("Likes: "+model.getLikes());
Picasso.get().load(model.getProfileImage()).into(holder.circleImageViewprofileImage);
Picasso.get().load(model.getPicture()).into(holder.ImageViewpicture);
holder.textViewuid.setVisibility(View.INVISIBLE);
holder.textViewpostType.setVisibility(View.INVISIBLE);
if(holder.textViewpostType.getText().equals("0")){
holder.ImageViewpicture.setImageDrawable(null);
}
}
@NonNull
@Override
public PostsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.posts_layout, parent, false);
return new PostsHolder(v);
}
class PostsHolder extends RecyclerView.ViewHolder {
TextView textViewdescription, textViewpostType, textViewtime, textViewuid, textViewusername;
Button buttonlikes;
ImageView ImageViewpicture;
CircleImageView circleImageViewprofileImage;
public PostsHolder(@NonNull View itemView) {
super(itemView);
textViewdescription = itemView.findViewById(R.id.post_description);
textViewpostType = itemView.findViewById(R.id.post_postType);
textViewtime = itemView.findViewById(R.id.post_uploadTime);
textViewuid = itemView.findViewById(R.id.post_userUID);
textViewusername = itemView.findViewById(R.id.post_userName);
buttonlikes = itemView.findViewById(R.id.post_likes);
ImageViewpicture = itemView.findViewById(R.id.post_image);
circleImageViewprofileImage = itemView.findViewById(R.id.post_profileImage);
}
}
}
哥我好笨
如果你想知道就这样做:
holder.ImageViewpicture.setVisibility(View.GONE);
看,这是我的问题:我使用了这个 FireBaseRecyclerViewAdapter,所以我可以上传并在我的 Homefragment 中显示我的 posts。但问题来了:我有一个布局,上面显示了图片 a 和文字。但是我也希望能够在没有图像的情况下显示 posts,所以我为每个 post 声明了一个名为 posttype 的变量,如果 posttype 为 0,则它是一个文本post否则就是图片post。问题是如何从支架上完全移除图像视图?
我试过了:
if(holder.textViewpostType.getText().equals("0")){
holder.ImageViewpicture.setImageDrawable(null);
}
但问题是 ImageView 仍然留在那里,只是看不见,但我希望它完全消失,你知道吗?
这是整个 PostsAdapter 的代码class快速回答会很有帮助谢谢:
package com.LiFit;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.firestore.FirestoreRecyclerAdapter;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.squareup.picasso.Picasso;
import de.hdodenhof.circleimageview.CircleImageView;
public class PostsAdapter extends FirestoreRecyclerAdapter<Posts, PostsAdapter.PostsHolder> {
public PostsAdapter(@NonNull FirestoreRecyclerOptions<Posts> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull PostsHolder holder, int position, @NonNull Posts model) {
holder.textViewdescription.setText(model.getDescription());
holder.textViewpostType.setText(String.valueOf(model.getPostType()));
holder.textViewtime.setText("uploaded at "+model.getTime());
holder.textViewuid.setText(model.getUid());
holder.textViewusername.setText(model.getUsername());
holder.buttonlikes.setText("Likes: "+model.getLikes());
Picasso.get().load(model.getProfileImage()).into(holder.circleImageViewprofileImage);
Picasso.get().load(model.getPicture()).into(holder.ImageViewpicture);
holder.textViewuid.setVisibility(View.INVISIBLE);
holder.textViewpostType.setVisibility(View.INVISIBLE);
if(holder.textViewpostType.getText().equals("0")){
holder.ImageViewpicture.setImageDrawable(null);
}
}
@NonNull
@Override
public PostsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.posts_layout, parent, false);
return new PostsHolder(v);
}
class PostsHolder extends RecyclerView.ViewHolder {
TextView textViewdescription, textViewpostType, textViewtime, textViewuid, textViewusername;
Button buttonlikes;
ImageView ImageViewpicture;
CircleImageView circleImageViewprofileImage;
public PostsHolder(@NonNull View itemView) {
super(itemView);
textViewdescription = itemView.findViewById(R.id.post_description);
textViewpostType = itemView.findViewById(R.id.post_postType);
textViewtime = itemView.findViewById(R.id.post_uploadTime);
textViewuid = itemView.findViewById(R.id.post_userUID);
textViewusername = itemView.findViewById(R.id.post_userName);
buttonlikes = itemView.findViewById(R.id.post_likes);
ImageViewpicture = itemView.findViewById(R.id.post_image);
circleImageViewprofileImage = itemView.findViewById(R.id.post_profileImage);
}
}
}
哥我好笨
如果你想知道就这样做: holder.ImageViewpicture.setVisibility(View.GONE);