如何获取列表视图项onTouch方法?

时间:2011-07-05 07:04:25

标签: android listview drag-and-drop

我有一个ListView,我想对列表项执行拖放操作。我正在覆盖具有两个参数的onTouch方法

@Override public boolean onTouch(View view, MotionEvent me) {}

在视图中我得到了完整的ListView。如何获得按下哪个键的特定TextView?

如果我长按并获得该视图,我可以拖动项目,但我不想执行长按操作。

如何在onTouch中获取所选项目位置?

2 个答案:

答案 0 :(得分:4)

一种方法是实施用于填充Adapter的自定义ListView。在getView的{​​{1}}方法中,您可以在您创建的视图上调用Adapter,并以此方式添加项目点击侦听器。

setOnClickListener of a ListView not working中有一些示例代码。

答案 1 :(得分:3)

我在llItem标记中添加了商品位置 在适配器:

public View getView(int position, View convertView, ViewGroup parent) {
   ...
   llItem = (LinearLayout) rowView.findViewById(R.id.lItem);
   llItem.setTag("" + position);
   llItem.setOnTouchListener(itemTouch);
   ...
}

以及标记

中提取的项目位置
 OnTouchListener itemTouch = new OnTouchListener() {
    private int position;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
       LinearLayout ll = (LinearLayout)v.findViewById(R.id.lItem);
       String itemTag = ll.getTag().toString();
       int itemPosition = Integer.parseInt(itemTag);
       ...
    }
 }