我想制作一个列表适配器,它可以像这样格式化视图:
我希望能够在用户单击图像时触发不同的 onClick。我已经在 getView() 覆盖中定义了图像本身的 onClick,但是我如何获取被单击的行的位置,以便我可以更新数据库中的记录以记录操作?
我想制作一个列表适配器,它可以像这样格式化视图:
我希望能够在用户单击图像时触发不同的 onClick。我已经在 getView() 覆盖中定义了图像本身的 onClick,但是我如何获取被单击的行的位置,以便我可以更新数据库中的记录以记录操作?
首先,您需要代表适配器的 ListView。如果您已经将其存储在某个地方,那就太好了;如果没有,您可以获取传递给 onClick() 的 View 并调用其 getParent() 方法两次(或更多,如果图像嵌套在单击项目的视图中更深)以获取 ListView。
从那里,对传入 onClick() 的视图调用 ListView.getPositionForView()。这将为您提供一个表示单击项目在列表适配器中的位置的 int。从那里,你可以用它做任何你想做的事情。
例如:
public void onClick(View v){
ListView lv = (ListView)(v.getParent().getParent()); // you may need more getParent()s and/or extra casting
int position = lv.getPositionForView(v);
/* Do whatever database stuff
* You want to do
*/
}