1

我想制作一个列表适配器,它可以像这样格式化视图:

列表条目

我希望能够在用户单击图像时触发不同的 onClick。我已经在 getView() 覆盖中定义了图像本身的 onClick,但是我如何获取被单击的行的位置,以便我可以更新数据库中的记录以记录操作?

4

1 回答 1

3

首先,您需要代表适配器的 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
    */
}
于 2010-07-03T03:16:39.563 回答