2015-01-15 59 views
0

我一直在編碼一段時間,但我從未參加任何課程,因此我對某些事情的工作方式有一些疑問。其中之一是onClick監聽器。我有一個關於onClick事件的問題,更確切地說是onItemClick事件。從onClick事件/ onClick事件行爲獲取數據

比方說,我有一個簡單的ListView和我要處理的onItemClick事件,我想有這樣的事情:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

ListView lv = (ListView)findViewById(R.id.listView); 

String parameter = "123"; 

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String item = parent.getItemAtPosition(position).toString(); 
       // TODO1 
      } 

} 
// TODO2 

有沒有辦法通過「項目」的價值,所以我可以用它在'TODO2'?另外,如果我在TODO1中需要做某些事情並且需要'參數'變量,是否有辦法將它傳遞給onItemClick方法?

謝謝!

回答

1

1)new AdapterView.OnItemClickListener是一個匿名內部類。它可能使用來自周邊類別的字段

2)參數必須定義爲「最終」變量。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ListView lv = (ListView)findViewById(R.id.listView); 

    String final parameter = "123"; //<-- 

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      item = parent.getItemAtPosition(position).toString(); //<-- 
      // TODO1 
      System.out.println(parameter) 
     } 

} 
// TODO2 

private String item = null; 

public String getLastClickedItem(){ 
    return item; 
} 
+0

我不認爲任何人都可以更好地解釋!非常感謝你! –