Java 在内部类之外声明int值
如何在内部类之外的setText中声明int count的值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
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不应该更新文本吗?你应该提供你问题的全貌