获取所点击项目的名称

时间:2013-02-27 13:48:20

标签: android gridview onitemclicklistener

我正在使用扩展BaseAdapter的类来填充我的布局上的gridView。 当我点击gridView的其中一个元素时,我想获取我点击的项目的名称(其中name是R.drawable.name中的名称)

所以这就是我写的

gridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                    Intent intent = new Intent(ChoseActivity.this,
                            GameActivity.class);
                    String ab = getResources().getResourceEntryName(arg1.getId());
                    intent.putExtra("AB", ab);
                    startActivity(intent);
}
}

我有这个错误

02-27 13:46:49.285: E/AndroidRuntime(24862): FATAL EXCEPTION: main
02-27 13:46:49.285: E/AndroidRuntime(24862): android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
02-27 13:46:49.285: E/AndroidRuntime(24862):    at android.content.res.Resources.getResourceEntryName(Resources.java:1499)
02-27 13:46:49.285: E/AndroidRuntime(24862):    at com.example.kersplatt.ChoseActivity$1.onItemClick(ChoseActivity.java:36)
02-27 13:46:49.285: E/AndroidRuntime(24862):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-27 13:46:49.285: E/AndroidRuntime(24862):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)

我不明白,因为图片在我的资源中点击了IS

EDIT1

我在我的适配器的getView中尝试了这个但仍然有相同的错误:

ImageView imageView = new ImageView(mContext);
imageView.setTag(R.drawable.currentimage);

5 个答案:

答案 0 :(得分:0)

没有getDrawableId函数,因此您需要在更改其drawable时为ImageView设置标记。

在适配器类getview()中将标签设置为imageview对象,让标签成为drawable资源的id。

imageview.settag(r.drawable.currentimage)

现在当你想要gridview的可绘制onClick时,获取标签并从其id获取可绘制的

int drawableId = (Integer)imageview.getTag();

您可以使用

获取drawable的名称
getResources().getResourceEntryName(int drawableId);

答案 1 :(得分:0)

首先,如果您的图像位于 resources / drawable 文件夹中,而不是简单地创建类似arraylist<integer>的类型的arraylist,接下来就会将所有这些图像添加到arraylist之后你的适配器类中的arraylist(假设你知道如何给自定义布局充气并使用你的arraylist来显示gridview中的所有图像,所以对于你在问题中提出的文本,也会为文本创建一个arraylist,这里的类型将是arraylist<Integer>只是因为它将保存资源/可绘制文件夹中的文本值(正如你所说的那样)或者你可以创建自己的arraylist<String>类型的arraylist并为它添加一些字符串(名称)你喜欢。

接下来,所有arraylist都会有一些位置,或者你可以为图像(using method imageview.setId())设置Id,同时给布局充气并在该imageview的clicklistener上检查或检索适配器类中的id或位置。你找到位置只是获取位置值并搜索文本的arraylist中的元素或项目(之前已经创建过),并在用户点击事件发生时从arraylist特定位置获取项目,然后在显示或打印之后获取。如果问题需要代码,请告诉我并抱歉我的英语。

答案 2 :(得分:0)

getResources().getResourceEntryName(arg1.getId());

您没有在此处指定上下文。可能是:

this.getResources().getResourceEntryName(arg1.getId());

像这样的东西

答案 3 :(得分:0)

我花了很多时间寻找一种方法来点缀它。在您的情况下,最简单的方法是使用arg3,其中包含您点击的视图的ID

String ab = getResources().getResourceEntryName(int()arg3);

答案 4 :(得分:-1)

是的,如果您拥有图像的资源ID,则可以获取图像的名称。您可以使用getResourceEntryName(resourceId)

如果您使用ArrayList作为图像路径,请使用

String name = getResources().getResourceEntryName(ArrayListName.get(arg2));

如果您正在使用数组

String name = getResources().getResourceEntryName(Arrayname[arg2]);