代码之家  ›  专栏  ›  技术社区  ›  detinu20

在内部类之外声明int值

  •  0
  • detinu20  · 技术社区  · 6 年前

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

        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");
    

    2 回复  |  直到 6 年前
        1
  •  2
  •   Remon Shehatta    6 年前

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

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

        2
  •  1
  •   Slacky    6 年前

    如果这确实是您正在寻找的一种方法,即使用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");
    

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