2011-02-28 37 views
2

嘿,我已經有一段時間了,我還沒有找到能夠100%工作的解決方案。檢測到Android畫廊項目的不同區域的點擊次數

的問題

我有一個Android圖庫它通過項目週期,每個週期包含一個ImageView的的(姑且稱之爲縮略圖),並在其下方的另一個查看了一些文字和一個小圖標(姑且稱之爲標題)。

我想實現的是根據用戶點擊的位置進行的兩種不同操作,所有操作都不會中斷畫廊左右晃動的方式。例如,如果點擊一個縮略圖,我想要做動作A(例如彈出一個更大的版本),當點擊標題時,我想要做動作B,比如彈出一個爲圖片標題烤麪包。

我已經試過

的事情有2種方法的問題,我看到它的方式:

方法1

從包含主視圖中附加一個OnItemClickListener到圖庫項目圖庫,然後將OnClickListener附加到圖庫適配器中的標題。

儘管這種方法有效,但它似乎可以防止畫廊如果被標題抓住並拖動,就不會扔光。

由於onClick返回void,因此似乎沒有辦法將onClick事件傳遞給以後由Gallery的onItemClick處理。

由於我希望能夠使用標題,所以這種方法對我來說不起作用,至少在目前的版本中。

方法2

第二屆做法是有畫廊的setOnItemClickListener內的所有檢測邏輯。

如果有一種方法可以確定點擊的視圖是縮略圖還是標題,那麼一切都會非常簡單,並且投射會完好無損。

但是,我不知道如何做到這一點。

g.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView parent, View v, int position, long id) { 
    // TODO: figure out which view has been clicked on, but how? 
    } 
} 

因爲我用的是無盡的適配器ViewHolders範式,我想打印的這些值:

Log.d("IDs", v.getId() + " " + ((ViewHolder) v.getTag()).thumbnail.getId() + " " + getSelectedItemId() + " " + parent.getId() + " " + parent.getItemIdAtPosition(0)); 

但他們都不同的點擊,比如說後,縮略圖:

-1 2131230800 -9223372036854775808 2131230865 0 

所以,現在我很難過。明智的Android社區,你能幫助我嗎?

謝謝。

回答

1

我有一個適合您的解決方案:SwipeView。這是我的一個開源項目,檢查github上的最新源代碼(我網站上的二進制文件有點過時了,很多與你正在討論的內容有關的bug已經修復)

https://github.com/fry15/uk.co.jasonfry.android.tools

這裏theres一個演示項目:http://jasonfry.co.uk/?id=28

享受!

+0

感謝Fry,我已經收到了關於您的項目的提示,但我希望在此期間,您可以告訴我您將如何解決該問題(我會盡快查看您的代碼)。 – 2011-03-01 21:21:16

+1

這裏是一個[awesome app](http://chomp.com),它使用'SwipeView' :) – ohhorob 2011-03-02 01:05:42

+0

好吧,讓你的SwipeView,在每一頁(一個頁面可以是任何ViewGroup)都有你的imageview和你的textview。在你的imageview上彈出一個onclicklistener,在你的textview上彈出一個onclicklistener。消耗觸摸事件的點擊偵聽器不應該有任何問題。 – jsonfry 2011-03-03 10:04:05