view.getId () возвращает неправильный идентификатор в OnItemClickListener - PullRequest
5 голосов
/ 30 сентября 2011

В моем приложении у меня есть Галерея с некоторыми изображениями. Когда пользователь выбирает изображение, я хочу каким-то образом получить идентификатор выбранного изображения.

int, который возвращается getId (), равен -1. Почему я не получаю системный идентификатор для выбранного изображения?

gallery.setOnItemClickListener(new OnItemClickListener() {
            @SuppressWarnings("rawtypes")
            @Override
            public void onItemClick(AdapterView parent, View v, int position, long id) {
                int imageId = v.getId();
            }
        });

Спасибо!

Ответы [ 2 ]

6 голосов
/ 30 сентября 2011

Использовать OnItemSelectedListener вместо OnItemClickListener

  gallery.setOnItemSelectedListener(new OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,int pos, long id){
                // TODO Auto-generated method stub
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

            }
        });
2 голосов
/ 30 сентября 2011

используйте это

public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        int imageId = (( ImageAdapter)parent.getAdapter()).mygetItemId(position);

        }
    }); 

в классе адаптера добавить эту функцию

public long getItemId(int position) {
        return imagearray[position];
    }
...