因此,我有一个屏幕,其中包含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