唯一标识以编程方式放置的ImageButtons

时间:2010-05-04 12:53:41

标签: android imagebutton

我一直在TableLayout中以编程方式放置几个ImageButton,每个ImageButton都有自己的Drawable资源作为Background。 我使用XML描述来处理ImageButton本身的布局,然后使用LayoutInflater来检索这样的ImageButton(称为genre_cell.xml):

<?xml version="1.0" encoding="utf-8"?>
<ImageButton
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/genreCellItemId" android:layout_weight="1"
android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal"
android:paddingLeft="5dip" android:paddingRight="5dip">
</ImageButton>

在我的班上,我做了:

myButton = (ImageButton) inflater.inflate(R.layout.genre_cell, row, false);

我实际上已经在每个ImageButton上附加了一个onClickListener,但是现在我想要唯一地识别单击了哪个ImageButton ... 我想也许我可以以某种方式检索用于背景的Drawable的ID并检查那个可用的Drawable的int值? 这是一个选项,如果是这样,应该如何实施? 还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

我偶然发现了一个博客,其中提到了ImageButton的setTag()和getTag()方法, 那些我可以使用的,因此我的问题得到了回答...... 链接到博客: http://jongladwin.blogspot.com/2010/03/androidsettag-and-gettag-usage-for.html

经过一番环顾,我甚至看到了setId()方法和getId()方法,所以看起来有几种方法可以识别出这样的ImageButton ......很高兴知道:P

答案 1 :(得分:1)

是的,你可以!

res/values文件夹中,创建一个xml文件button_ids.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
  <item type="id" name="image_button_one" />
  <item type="id" name="image_button_two" />
  ...
</resources>

然后在你的充气电话之后:

myButton = (ImageButton) inflater.inflate(R.layout.genre_cell, row, false);
myButton.setId(R.id.image_button_one);
...

我实际上没有尝试过,但我认为这就是你应该这样做的。