2013-02-27 179 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]);