Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在内部类之外声明int值_Java_Android - Fatal编程技术网

Java 在内部类之外声明int值

Java 在内部类之外声明int值,java,android,Java,Android,如何在内部类之外的setText中声明int count的值 model.getSearch().observe(this, new Observer<List<Sight>>() { @Override public void onChanged(@Nullable List<Sight> searchList) { adaptersearch = new SearchAdapter(Searc

如何在内部类之外的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");
model.getSearch().observe(这个,新的观察者(){
@凌驾
公共void onChanged(@Nullable List searchList){
adaptersearch=新的SearchAdapter(SearchResults.this,searchList);
searchlist.setAdapter(适配器搜索);
整数计数=0;
if(适配器搜索!=null){
count=adaptersearch.getItemCount();
}
}
});  
apptxt.setText(计数+名称+项目);

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

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

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


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

如果这确实是您要寻找的场景,一种方法是使用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");
最终原子整数计数=新的原子整数(0);
model.getSearch().observe(这个,新的观察者(){
@凌驾
公共void onChanged(@Nullable List searchList){
adaptersearch=新的SearchAdapter(SearchResults.this,searchList);
searchlist.setAdapter(适配器搜索);
if(适配器搜索!=null){
set(adaptersearch.getItemCount());
}
}
});  
apptxt.setText(count.get()+name+“items”);

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

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