2011-11-22 47 views
11

當我們執行OnItemClickListener時,我們必須實現onItemClick方法,這是一個在OnItemClickListener接口中的抽象方法。在onItemClick方法中有四個參數。onItemClick在Android中的「int」和「long」參數有什麼區別

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    Toast.makeText(this, "Clicked on : " + arg2 + " long arg : " + arg3, 
        Toast.LENGTH_LONG).show(); 
} 

我需要知道的是最後兩個參數(int arg2, long arg3)之間的差異。正如你可以在我的代碼中看到的,當我嘗試Toast時,我得到了兩個參數的相同值。

+0

我必須想出辦法來明確... [鏈接](HTTP ://anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/) – AnujAroshA

回答

2

給出的答案非常有用。但所需的答案,我的意思是我想要的確切答案是作爲自己對這個問題的評論發佈的。但那不會增加我的「接受水平」。所以我想把鏈接作爲問題的答案。這裏是link的答案。

+0

僅鏈接答案不是很好的答案。 –

4

考慮閱讀the documentation

int是視圖位置,long是項目ID。

(我們看不到,你得到兩個相同的值,我們只看到你的代碼,而不是你的屏幕。)

+2

我無法上傳任何圖像caz我是新來的Stackoverflow,我也閱讀過文檔,並以相同的方式解釋它。我需要更多的解釋。這就是爲什麼我在這裏發佈這個問題。如果你能指出一個代碼示例,我可以看到我們如何使用最後兩個參數,我非常高興。 – AnujAroshA

1

INT值表示位置項目,並值代表項目ID。

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

parent  The AdapterView where the click happened. 
view  The view within the AdapterView that was clicked 
      (this will be a view provided by the adapter) 
position The position of the view in the adapter. 
id   The row id of the item that was clicked. 
+0

+1個不錯的信息,但來自Android文檔:) –

+0

在列表中,當我們點擊一​​個項目時,該回調項目的「位置」。那麼什麼是「身份證」。如果你能解釋一些這樣的事情,我會非常感激。在這裏提出這個問題之前,我已經完成了我的家庭作業(閱讀Android文檔)。所以請解釋一些比文檔更多或不同的東西。謝謝(http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html#onItemClick%28android.widget.AdapterView%3C?%3E,%20android.view.View,%20int,%20long %29) – AnujAroshA

+0

讓我們在列表中的5個項目,位置從零開始,即(0,1,2,3,4)是項目的位置,並且id表示自動它將在運行時由android生成以用於識別這幾項。 –

1

在我看來,通過這個職位,你可以通過適配器的getItem(position)獲得行項目。 所以,位置意味着適配器中的數據位置。

對於id參數,我認爲這是一種幫助方法,正如您所知,適配器中的數據始終是一個記錄器。一般來說,記錄器應該有一個id列(類似於數據庫ID)。編碼時,您可以通過位置獲取物品,然後獲取物品的ID(如果物品有ID)。但你可以直接用「id」參數獲得這樣的「id」。 您可能會注意到:位置是「int」類型,而「id」是「long」類型。

順便說一句,如果你想使用id參數,你必須在適配器中實現getItemId()方法。 ArrayAdapter中的默認實現只是返回該位置。

25

我和你有同樣的問題。但是,這裏的答案並不是非常有用。我不支持你自己去看看它,特別是當所謂的文檔不清楚的時候。不過,我確實是自己去查看它的,下面是我發現的。

INT值在視圖的位置。對於ListView,它是行號。第一行是位置0,第二行是位置1,第三行是位置2,等等。請注意,如果你的ListView有一個標題視圖(就像你做了ListView.addHeaderView(View)一樣),那麼標題視圖將位置爲0,實際排將在1

啓動其編號有時值是一樣的INT位置,有時是不同的。如果您使用的是ArrayAdapterSimpleAdapter,那麼它們是相同的(除非有一個標題視圖,然後它們被關閉)。對於CursorAdapter(因此爲SimpleCursorAdapter),該ID將返回該表的行ID,即_id。這是一個而不是INT,因爲理論上數據庫可能有更多的行比int可以容納,而ListView不會。

這裏有一些其他的相關答案:

相關問題