我正在使用扩展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);
答案 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]);