我有ListAdapter的这个实现:
public class TaskAdapter implements ListAdapter, View.OnClickListener {
Context context;
List<Task> tasks;
// 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)
{
Task 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)**
}
});
}
我的问题是如何在项目行中的按钮上访问onClick事件内的任务数据(不是视图点击而是列表视图上的按钮)?
我的任务类包含exmaple getName()方法和其他...
答案 0 :(得分:0)
您应该能够通过将Task的实例化更改为
来访问数据final Task data = tasks.get(position);
答案 1 :(得分:0)
由于您将onClickListener的工具用作内部类,因此该变量在其中不可访问。 因此,您应该在适配器级别声明一个Task变量,基本上是TaskAdapter的成员,或者如果它可以工作则使其成为最终
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方法并从那里返回数据源中的对象。
public Object getItem (int position){
return (Task)tasks.get(position);
}