将数据传递给OnItemClickListener?

|
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
变量?
已邀请:
使
data
final
,并且您应该能够在onItemClick中使用
data
进行引用
final DataAccess data = new DataAccess(db);


lv.setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View view,
      int position, long id) {

        List<String> countries = data.getCountries();
   }
}
我们这样做是有原因的。当您调用\“ new OnItemClickListener()\”时,实际上是在创建一个匿名内部类。生成的字节码实际上不会转换为内部类,JVM对此内部类不了解。 内部类文件被转换为单独的类文件,该类文件包含外部类文件和内部类文件的组合,并用\“ $ \”符号分隔。由于这种情况是匿名的,因此使用整数来标识内部类。
OuterClass$1.class
在上述情况下,当在Outer类中创建变量时,inner类将对此一无所知。 但是,当您将其标记为final时,内部类(实际类文件)将在其中包含对外部类变量的引用的隐藏变量。
data$data
希望这可以帮助。

要回复问题请先登录注册