2010-07-06 32 views
28
gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

回答

21

<?>表示通用。閱讀更多關於他們here

這裏是什麼documentation說的有關參數:

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

在點擊發生的適配器視圖。

視圖被點擊的適配器視圖內的視圖(這將是由適配器提供的視圖)

位置在適配器的視圖的位置。

id被點擊的項目的行ID。

AdapterView可以是ListViewGridViewSpinner等尖括號內的問號表明它可能是其中任何一個。這在Java中被稱爲generics。您可以使用代碼中的父級對整個視圖執行某些操作。例如,如果你使用的是ListView,你可以通過下面的代碼隱藏整個ListView

parent.setVisibility(View.GONE); 

View是指一個特定的項目AdapterView內。在ListView這是行。因此,你可以說這樣的事情得到一個行內的TextView參考:

TextView myTextView = (TextView) view.findViewById(R.id.textView1); 
String text = myTextView.getText().toString(); 

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

有時ID開始他們的編號是一樣的位置,有時是不同的。如果您使用的是ArrayAdapterSimpleAdapter,那麼它們是相同的(除非有一個標題視圖,然後它們被關閉)。對於CursorAdapter(因此爲SimpleCursorAdapter),id返回表格的行ID,即_id

下面是關於該主題的其他幾個很好的答案:

0

The?意味着數據類型是未知的,並且可以是任何類型。

+0

您添加的適配器和知道類型 - 如此簡單的類型轉換得到什麼你想。 – slott 2015-03-12 14:23:45

相關問題