无法解析方法'setAdapter()'
我发现了几个类似这个问题,但没有一个解决了我的问题。这是我写的代码 -无法解析方法'setAdapter()'
DataBaseHelper dataBaseHelper;
ArrayAdapter<String> mAdapter;
ListView notesList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataBaseHelper = new DataBaseHelper (this);
notesList = (ListView) findViewById(R.id.notesList);
loadNotesList();
}
public void loadNotesList() {
ArrayList<String> notesList = dataBaseHelper.getNameList();
if (mAdapter == null) {
mAdapter = new ArrayAdapter<String>(this, R.layout.row, R.id.note_name, notesList);
notesList.setAdapter(mAdapter);
}
else {
mAdapter.clear();
mAdapter.addAll(notesList);
mAdapter.notifyDataSetChanged();
}
}
...
我的代码似乎就像我在下面的教程中的代码,和我的代码似乎喜欢它是在正确的位置,但我知道,我我失去了一些东西或者做错了什么,因为Android的工作室给了我这个错误 -
Cannot resolve method 'setAdapter(android.widget.ArrayAdapter<java.lang.String>)'
有谁看到我做错了什么,或者我可能需要添加或更改?谢谢!
你介绍了局部变量notesList
内loadNotesList
功能:
ArrayList<String> notesList = dataBaseHelper.getNameList();
更改此名称到别的东西。
这完全回答了我的问题*。我只是有冲突的变数,就这些。谢谢你,我的男人。 –
@GeorgeB很高兴为您效劳。 – andrei
你传递一个ListView
作为
mAdapter = new ArrayAdapter<String>(this, R.layout.row, R.id.note_name, notesList);
最后一个参数这不是有效的。
是的。这是因为我有冲突的变量'ListView notesList'和'ArrayList
非常欢迎。只要接受答案,其他开发人员就可以从您的问题中受益。 –
@GeorgeB这不是真的。他传递ArrayList
notesList
是一个字符串和ListView的ArrayList,您将需要更改名称。
您已经声明了一个member
变量notesList
为ListView
ListView notesList = (ListView) findViewById(R.id.notesList);
,另一对是string
ArrayList
这是方法loadNotesList()
ArrayList<String> notesList = dataBaseHelper.getNameList();
解决方案的local
变量:
您可以使用this
运算符或为2个变量使用不同的名称。
尝试这种情况:
DataBaseHelper dataBaseHelper;
ArrayAdapter<String> mAdapter;
ArrayList<String> notesList
ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataBaseHelper = new DataBaseHelper (this);
mListView = (ListView) findViewById(R.id.notesList);
loadNotesList();
}
public void loadNotesList() {
notesList = dataBaseHelper.getNameList();
if (mAdapter == null) {
mAdapter = new ArrayAdapter<String>(this, R.layout.row, R.id.note_name, notesList);
mListView.setAdapter(mAdapter);
}
else {
mAdapter.clear();
mAdapter.addAll(notesList);
mAdapter.notifyDataSetChanged();
}
}
...
谢谢你让我知道。这是一个错误。 :) – FAT
你已宣布ListView notesList;
方法(成员变量)外侧和ArrayList<String> notesList
是loadNotesList()
(区域设置变量)的内部。
所以当你试图访问notesList
里面的方法时,Locale变量会调用(Scope of variables)。
作为一种解决方案可以添加this.notesList
(this
关键字来引用实例/成员变量在类),如以下:
mAdapter = new ArrayAdapter<String>(this, R.layout.row, R.id.note_name, this.notesList);//will call member variable
然而,为了保持简单起见,可以重命名notesList
变量之一名称(由你决定)。
那么,'ArrayList'没有'setAdapter(String)'方法,'notesList'是'ArrayList' ... –