2012-03-14 65 views
3

我想從我的ListView和setOnTouchListener爲獲得一個項目的setOnTouchListener一個項目,下面是我的代碼,但我無法正確設置它。如何在ListView

listView.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View selectedView, 
        int position, long id) { 

      Log.d("ON ITEM CLICK...", " ON ITEM CLICK... "+ position); 

      listView.getChildAt(position).setOnTouchListener(HorizontalListActivity.this); 

      ViewHolder viewHolder =(ViewHolder)selectedView.getTag(); 

      viewHolder.ivThumbnail.setOnTouchListener(HorizontalListActivity.this); 

      } 
     }); 

我想訪問該項目的原因是我想將它拖到屏幕上。

有沒有更好的辦法做到我想要什麼?

+0

嘗試改變'listView.getChildAt(位置).setOnTouchListener'到'selectedView.setOnTouchListener'或'getView'方法,當初始化了'ivThumbnail',使用'setOnTouchListener' – idiottiger 2012-03-14 08:16:43

+0

,要麼不工作,onTouch不會觸發 – 2012-03-14 08:17:44

+0

'setOnTouchListener'不意味觸發的onTouchEvent,只需設置監聽器,僅次於它會被調用,將調用'OnTouchListner'接口方法。 – idiottiger 2012-03-14 08:20:34

回答

2

我在同樣的情況,並發現了一些可能的工作,但我還沒有嘗試一下的時間。基本的想法是使用getChildAt將觸摸事件分發給孩子,就像你一樣。你聽在列表視圖觸摸事件,並簡單地如果你感動的視圖中,您有興趣,分派觸摸事件,以它來處理:

MyControl control = ListViews.getChildAt(position)); 
control.onTouchEvent(touchEvent); 
+0

我已經測試過這個方法 - 對於在可滾動視圖內滾動,只是將事件分發給子代(您可能還需要使用findview以根據您擁有的不同佈局獲取適當的視圖...但是,絕對有效。 – 2012-05-29 12:15:57