【问题标题】:Declaring an int value outside of inner class [duplicate]在内部类之外声明一个int值[重复]
【发布时间】:2020-05-03 20:10:29
【问题描述】:

如何获取要在其内部类之外的 setText 中声明的 int 计数值?

    model.getSearch().observe(this, new Observer<List<Sight>>() {
        @Override
        public void onChanged(@Nullable List<Sight> searchList) {
            adaptersearch = new SearchAdapter(SearchResults.this, searchList);
            searchhList.setAdapter(adaptersearch);
            int count = 0;
            if (adaptersearch != null) {
                count = adaptersearch.getItemCount();

            }


        }
    });  
    apptxt.setText(count +name+ "items");

此时它刚刚出现错误无法解析计数。

【问题讨论】:

  • 你能提供更多细节吗?您需要在 onChanged 方法之外设置文本吗?我的意思是每当计数发生变化时,apptxt 不应该更新文本吗?您应该提供问题的全貌

标签: java android


【解决方案1】:

您不能从内部类写入已在外部类中初始化的变量(更改变量的值)。

有一种解决方法是创建一个具有一个值的最终 int 数组,然后您可以在内部类中访问它。

请记住,这不是最好的方法。

【讨论】:

    【解决方案2】:

    如果这确实是您正在寻找的一种方法,那就是使用 int 包装器或使用 AtomicInteger,如果其中涉及线程,这将很有帮助:

    final AtomicInteger count = new AtomicInteger(0);
    model.getSearch().observe(this, new Observer<List<Sight>>() {
            @Override
            public void onChanged(@Nullable List<Sight> searchList) {
                adaptersearch = new SearchAdapter(SearchResults.this, searchList);
                searchhList.setAdapter(adaptersearch);
                if (adaptersearch != null) {
                    count.set(adaptersearch.getItemCount());
    
                }
    
    
            }
        });  
        apptxt.setText(count.get() +name+ "items");
    

    您遇到的是在这种情况下引用应该是最终的,因此您必须更改对象内部的值,因为您无法更改引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-23
      • 2013-03-23
      • 2023-03-03
      • 2019-10-26
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多