2013-02-27 4 views
2

Я использую класс, расширяющий BaseAdapter, чтобы заполнить gridView на моем макете. Когда я нажимаю на одном из элементов GridView я хочу, чтобы получить имя элемента, я нажал на (где имя это имя в 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) 

Я не понимаю, потому что изображение щелкнуло в моих RESSOURCES

EDIT1

Я попробовал это в GetView моего адаптера, но по-прежнему имею ту же ошибку:

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

Идентификатор зрения не связано с доступный ресурс, который он удерживает. Вы можете установить id в представления и затем получить к ним доступ, используя, например: findViewById (id) в своей деятельности. В вашем случае, если вы хотите получить извлечение, которое было добавлено в представление, вам сначала нужно указать вид на тип используемого вами вида, например ImageView, и только затем извлечь идентификатор для рисования и получить имя ресурс. – sromku

+0

Идентификатор здесь указывает на тег вида, который вы пытаетесь найти. – lokoko

+0

и что мне нужно сделать, чтобы найти имя для рисования? – morg

ответ

0

Там нет getDrawableId функции так что вам нужно сделать что-то вроде набора тега для ImageView при изменении его можно использовать.

В вашем классе адаптера getview() установите тег на объект imageview, пусть тег будет идентификатором ресурса drawable.

imageview.settag(r.drawable.currentimage) 

теперь, когда вы хотите вытяжку OnClick из GridView, получить тег и получить вытяжку из его id

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

и вы можете получить имя из вытяжки с помощью

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

Что такое r.drawable.currentimage в getView? Как мы можем получить изображение? – morg

+0

идентификатор выталкиваемого, а также u нужно установить onclicklistener для всех элементов u, чтобы найти источник. просто добавьте класс с помощью onclicklistener и присвойте setonclicklistener «this» – Neji

+0

в коде u, который вы использовали вместо использования креатина (viewview) view.findviewbyID (idofimageview), это вернет существующий элемент iview – Neji

0

Первое, что нужно для u, если ваше изображение в папке /drawable, чем просто сделать arraylist такого типа, как arraylist<integer> и следующая вещь добавляет все эти изображения в arraylist после того, как использует этот arraylist в вашем классе адаптера (предположим, что вы знаете, как раздувать пользовательский макет и использовать ваш arraylist, чтобы отображать все это изображение в gridview, поэтому для текста, который вы запрашиваете в своем вопрос также делает arraylist для текста, и здесь тип будет arraylist<Integer> только потому, что он будет содержать текстовое значение, которое находится в папке ресурса/рисунка (как указано в вопросе), или вы можете сделать свой собственный arraylist типа arraylist<String> и добавить строку String (имя) к нему, как и вам.

Следующее, что у всех арраистов будет какая-то позиция, или вы можете установить Id для изображения (using method imageview.setId()), раздувая макет и проверяя или извлекайте идентификатор или позицию в своем классе адаптера на клик-клиенте этого изображения, поэтому после того, как вы найдете позиция просто берет значение позиции и выполняет поиск элемента или элемента в arraylist текста (который уже создан ранее) и получает элемент из определенной позиции arraylist, когда происходит событие щелчка пользователя и после этого отображается или печатается как u like.if код требуется в отношении вопроса pls, дайте мне знать и извините за мой английский язык.

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

Вы не указали здесь какой-либо контекст. Может быть:

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

Что-то вроде этого

0

Я потраченное Somtime ищет способ усеивают его.Самый простой способ сделать это в вашем случае использовать arg3, который содержит идентификатор вашего щелкнул вид что-то вроде этого

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

Да, вы можете получить имя изображения, если у вас есть идентификатор ресурса изображения. Вы можете использовать getResourceEntryName (RESOURCEID)

если вы используете ArrayList для пути изображения используйте

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

, если вы используете массив, то

String name = getResources().getResourceEntryName(Arrayname[arg2]); 
Смежные вопросы