【问题标题】:where can I set setVisibility gone to a textview in recyclerview?我在哪里可以设置 setVisibility 到 recyclerview 中的文本视图?
【发布时间】:2017-02-27 13:26:56
【问题描述】:

我有一个 recyclerview 并且在每个项目中我都有一个按钮。有时我需要在某些项目中隐藏这个按钮。

item 1
button visible

item 2
button gone
...

问题是,我不知道将MyButton 设置为GONE 的最佳位置在哪里。我在public ViewHolder(View itemView) 内部尝试过,但我的应用程序崩溃了。

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {

    private ImageLoader imageLoader;
    private final Context context;

    //List to store all posts
    List<Posts> Posts;


    //Constructor of this class
    public CardAdapter(List<Posts> Post, Context context){
        super();
        this.Posts = Post;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.posts_list, parent, false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        Posts post =  Posts.get(position);
        holder.post = post;

        //Loading image from url
        imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();

        //Showing data on the views
        holder.imageView.setImageUrl(post.getImageUrl(), imageLoader);
        holder.textViewName.setText(post.getName());
        holder.textViewPublisher.setText(post.getPublisher());
        holder.setIsRecyclable(false);

    }

    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        //Views
        public NetworkImageView imageView;
        public TextView textViewName;
        public TextView textViewPublisher;
        public TextView textViewMyButton;
        public Posts post;

        //Initializing Views
        public ViewHolder(View itemView) {
            super(itemView);
            imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
            textViewName = (TextView) itemView.findViewById(R.id.textViewName);
            textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher);
            textViewMyButton = (TextView) itemView.findViewById(R.id.textViewMyButton);

        }
        @Override
        public void onClick(View v) {
            //
        }

    }
}

我想做这样的事情:

if(StringName == "1"){ TextView txtView2 = (TextView) itemView.findViewById(R.id.MyButton); txtView2.setVisibility(View.GONE); }

任何想法我可以在哪里以及如何添加它以隐藏 StringName==1 的 recyclerview 中的按钮?

【问题讨论】:

  • 1) 你在比较字符串错误 2) 显示崩溃的代码和与之相关的错误
  • 顺便说一句,这让我很困扰,但是您的 Posts 类是一个代表一个帖子的单一对象,因此将其命名为 Post 会更有意义 ;)

标签: android android-layout android-studio android-recyclerview


【解决方案1】:
 @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        Posts post =  Posts.get(position);
        holder.post = post;

        //Loading image from url
        imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();

        //Showing data on the views
        holder.imageView.setImageUrl(post.getImageUrl(), imageLoader);
        if(condition is true){

        holder.textViewName.setVisibility(View.GONE);
        }else{
        holder.textViewName.setVisibility(View.VISIBLE);
        }
            holder.textViewName.setText(post.getName());

  holder.textViewPublisher.setText(post.getPublisher());
            holder.setIsRecyclable(false);

        }

您可以像上面一样在onBindViewHolder 中设置可见性。 您必须为您的视图设置两个可见性。如果您只将其设置为已消失,并且在条件为真时不将其写入可见。您将在滚动时遇到错误。

【讨论】:

    【解决方案2】:

    最好的位置是onBindViewHolder,因为您可以访问适配器的当前行以及将在那里显示的任何数据。

    您不应该使用 ViewHolder 的构造函数,因为它应该只是“保持视图”。

    如果您的应用崩溃,我们需要比您提供的更多信息

    【讨论】:

      【解决方案3】:

      您应该在OnBindViewHolder 方法中设置可见性。 并且在 Java 中检查字符串不应该像 StringName == "1" 那样使用“==” 并且应该使用“等于”而不是像StringName.equals("1")

      【讨论】:

      • 哦,非常感谢。我是一名php开发人员,并认为这里是一样的。
      猜你喜欢
      • 2014-08-08
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      相关资源
      最近更新 更多