2013-02-27 132 views
2

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

所以这里的名字在GridView的要素之一就是我写

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) 

我不明白,因为图像点击在我ressources

EDIT1

我想这在我的适配器的getView但仍然有同样的错误:

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

视图的ID是不相关的使用getResourceEntryName(RESOURCEID)

它所拥有的可绘制资源。您可以将ID设置为视图,然后通过在您的活动中使用findViewById(id)来访问它们。在你的情况下,如果你想检索添加到视图中的drawable,那么你首先需要将视图转换为你使用的视图类型,比如ImageView,然后检索drawable的id并获得资源。 – sromku 2013-02-27 13:54:54

+0

此处的id指向您正在查找的视图的标记。 – lokoko 2013-02-27 13:55:43

+0

,我应该怎么做才能找到drawable的名字? – morg 2013-02-27 13:56:25

回答

0

没有getDrawableId功能,所以你需要的时候你改做类似设置标签的ImageView的它的drawable。

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

imageview.settag(r.drawable.currentimage) 

现在,当你想GridView控件的绘制的onClick,取得标记,并从其id

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

获得绘制,并且可以使用得到绘制的名​​字

getResources().getResourceEntryName(int drawableId); 
+0

什么是getView中的r.drawable.currentimage?我们如何获得点击的图像? – morg 2013-02-27 14:21:38

+0

drawable的id,还需要将onclicklistener设置为您想要查找源代码的所有元素。只需用onclicklistener扩展类,并将setonclicklistener分配给代码中的“this” – Neji 2013-02-27 15:50:01

+0

,而不是creatin新的对象使用(imageview)view.findviewbyID(idofimageview),这将返回现有的iview元素 – Neji 2013-02-27 15:51:32

0

第一件事,如果你在资源/可绘制文件夹中的图像比简单地制作像arraylist<integer>类型的数组列表和接下来将所有这些图像添加到数组列表中,然后在适配器类中使用该数组列表(假设您知道如何膨胀自定义布局并使用数组列表在GridView中显示所有图像,以便在文本中显示所需图像问题使一个文本arraylist也这里的类型将是arraylist<Integer>仅因为它将持有资源/可绘制文件夹中的文本值(如你说的问题),或者你可以使你自己的数组阵列列表并添加一些字符串(名字)就像你喜欢的一样。

接下来的事情,所有的arraylist都会有一些位置,或者你可以设置图像的ID (using method imageview.setId()),同时膨胀布局,并检查或检索适配器类中的id或位置在该图像视图的clicklistener,所以你找到位置只是取位置值并搜索文本数组列表中的元素或项目(之前已创建),并在用户单击事件发生时从数组列表特定位置获取项目,然后在显示或打印之后获取该项目。是需要关于这个问题,请让我知道和对我的英语语言感到抱歉。

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

您在这里没有指定上下文。可能是:

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

类似的东西

0

我花了somtime寻找一种方式来点吧。做你的情况,最简单的方法是使用ARG3其中包含您点击视图东西ID这样

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

是的,你可以得到图像的名称,如果你有图片的资源ID。你可以,如果你正在使用ArrayList的图像路径,然后使用

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

如果您使用数组,那么

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