java是否将数据传递给McClickListener?
DataAccess data = new DataAccess(db);
List<String> countries = data.getCountries();
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, countries));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
如何从onItemClick
方法内部传递和访问data
变量
# 1 楼答案
制作
data
final
,你应该能够在onItemClick中用data
引用它# 2 楼答案
我们这样做是有原因的。当您调用“new McClickListener()”时,实际上是在创建一个匿名内部类。生成的字节码实际上不会转换为内部类,JVM对这个内部类一无所知
内部类文件被转换为单独的类文件,其中包含外部类文件和内部类文件的组合,并用“$”符号分隔。由于这种情况是匿名的,所以使用整数来标识内部类
在上面的场景中,当您在外部类中创建变量时,内部类将对此一无所知。 但是,当您将其标记为final时,内部类(实际的类文件)将在其中获得一个隐藏变量,并引用外部类变量
希望这有帮助