2014-01-08 2 views
0

내가 ListAdapter의 구현을 클릭 항목 행 (보기 클릭이 아니라 목록보기의 버튼)?액세스 개체는

내 작업 클래스는 ... exmaple getName() 메소드 및 다른 사람을위한

+0

[OnItemClickListener] (http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html)를 살펴 봐야합니다. – tolgap

+0

왜'task.get (position)'을 사용할 수 없습니까? – tyczj

+0

@tyczj "다른 메서드로 정의 된 내부 클래스 내부의 최종 변수 데이터를 참조 할 수 없습니다." –

답변

0

에 작업의 당신의 인스턴스를 변경하여 데이터에 액세스 할 수 있어야합니다 OnClickListener를의 포함 내부 클래스로 구현하면 변수는 내부 클래스에서 액세스 할 수 없습니다. 이 항목에 액세스 할 수있는 더 좋은 방법의

public class TaskAdapter implements ListAdapter, View.OnClickListener { 

Context     context; 

List<Task>    tasks; 
Task data; 

// View adapterView; 
public TaskAdapter(Context context, List<Task> tasks) { 
    super(); 
    this.context = context; 
    this.tasks = tasks; 
} ... 



@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    data = tasks.get(position); 
    Button task_menu_bt = (Button)root.findViewById(R.id.taskMenuButton); 

     task_menu_bt.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       **//  How to access current Task data?? i can not do tasks.get(position)** 
      } 
     }); 

final Task data = tasks.get(position); 

하나를 작동하는지 그래서 당신은 getItem 메소드를 오버라이드 (override)하는 것입니다, 어댑터 수준에서 TaskAdapter의 기본적 구성원 태스크의 변수를 선언하거나 최종 만들던가 중 하나와 거기서 데이터 소스에서 객체를 반환하십시오.

public Object getItem (int position){ 
    return (Task)tasks.get(position); 
} 
0

당신이 사용하고 있기 때문에 당신은

final Task data = tasks.get(position);