因此,我有一個屏幕,其中包含0到6個相同的用戶界面組件通過XML。類似這樣的東西:如何處理重複自定義組件的點擊/觸摸?
<TableRow android:layout_height="150px">
<include android:id="@+id/p1" android:layout_width="fill_parent"
android:layout_height="wrap_content" layout="@layout/numerics_component"
android:onClick="onClick" />
</TableRow>
<TableRow android:layout_height="150px">
<include android:id="@+id/p2" android:layout_width="fill_parent"
android:layout_height="wrap_content" layout="@layout/numerics_component"
android:layout_below="@id/p1" android:onClick="onClick" />
</TableRow>
...等
每個所包括UI的是幾個小部件,而且我重用自定義組件的集合。
我想檢測點擊在我的活動包括位中的組件,並適當地作出響應。問題是,在我的onClick方法,如果我共同遵循的模式,我永遠無法知道其中的觀點得到了點擊:
public void onClick(View view) {
Log.d(loggingName, "Got onClick event on view: " + view);
// Identify the view, and handle appropriately:
switch (view.getId()) {
...
與上面的代碼我永遠無法知道其成分的6份被點擊。必須有一個很好的方法來做到這一點,但我沒有看到它。
此外,我不想將可重用組件硬編碼到一個活動,因爲我想在應用程序的多個活動中重複使用它。所以理想情況下,我可以在我的Activity中設置監聽器。
關於如何做到這一點的任何想法?
謝謝!
因此,基本上當我的Activity加載時,它需要循環遍歷6個可能的包含區域,並將setTag()中的每個組件都帶有ID?這似乎會起作用,但它的醜陋地獄。我會給它一個鏡頭並回報。謝謝! –
您也可以在每個View實例上設置一個唯一的點擊處理程序。但這並不難看。由於某些我不知道的原因,View.getId()不能可靠地工作。 – mportuesisf
增加了一個選項 - 將保存的對象引用與傳遞給onClick()的值進行比較。看到我編輯的答案。 – mportuesisf