2015-01-15 4 views
0

잠시 동안 코딩을 해본 적이 있지만 어떤 코스도 수강하지 못했기 때문에 몇 가지 작동 방식에 대해 몇 가지 질문이 있습니다. 그 중 하나는 onClick 리스너입니다. onClick 이벤트, 더 정확하게 onItemClick 이벤트에 대한 질문이 있습니다.onClick 이벤트/onClick 이벤트 비헤이비어에서 데이터 가져 오기

의 내가 간단한 목록보기 있다고 가정 해 봅시다 내가, 내가 같은 것을했을 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) 새 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

나는 더 잘 설명 할 수 있다고 생각하지 않는다! 고마워요! –