Android从OnItemClickListener中获取点击位置

时间:2015-04-17 19:05:50

标签: android listview

当用户点击我的列表视图时,如何获得以下信息?

  • 对所选项目的引用
  • 点击坐标或TouchEvent对象

我没有选择从适配器捕获点击,我使用的API阻止我这样做。

我确实可以控制视图本身的创建。

我有办法从OnItemClickListener获取视图的点击位置吗?

2 个答案:

答案 0 :(得分:2)

您可以使用OnTouchListener

private int positionX;
private int positionY;

getListView().setOnTouchListener(new OnTouchListener() {
  public boolean onTouch(View view, MotionEvent event) {
    positionX = (int)event.getX();
    positionY = (int)event.getY();
    return false; // not consumed; forward to onClick
  }
});

getListView().setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Log.d("TAG", "Item position: " +position);
    Log.d("TAG", "Screen X: " +positionX);
    Log.d("TAG", "Screen Y: " +positionY);
    ...
  }
});

注意 :如果您想要OnItemClickListener中的坐标,请将这些位置存储在ListView的私人成员中。这是有效的,因为onTouch

之前会调用onItemClick

答案 1 :(得分:0)

你想要什么? 触摸坐标?

使用:

YourListView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
            int x = (int)event.getX();
            int y = (int)event.getY();    
            Toast.makeText(getApplicationContext(),"Coordinates: " + x + " , "+ y, Toast.LENGHT_SHORT).show();
            return true;
    }
});