Проблема передачи параметра в другой класс - PullRequest
0 голосов
/ 09 августа 2011

У меня довольно специфическая проблема. Я пытаюсь передать ряд параметров в метод из другого класса, и три из четырех параметров передаются просто отлично. Четвертый, однако, возвращает 0 (ноль) независимо от того, что я, кажется, делаю.

Я инициализирую второй класс, ImageLoader, без каких-либо проблем.

Вот вопрос, о котором идет речь - я добавил комментарии, чтобы объяснить мою проблему:

imageLoader.DisplayImage(coverFileNames.get(position), Main.this, (ImageView) convertView, position); // coverFileNames.get(position) works great and returns the correct filename based on the position - position on its own, however, doesn't!

А вот метод DisplayImage:

public int position;

public void DisplayImage(String fileUrl, Activity activity, ImageView imageView, final int pos) {
                position = pos; // this is 0 no matter what I do
                imageViews.put(imageView, fileUrl);
                queuePhoto(fileUrl, activity, imageView);
                imageView.setImageResource(R.drawable.noposterlarge);
            }

Есть идеи? Спасибо.

EDIT:

Вот метод GetView:

public View getView(int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
                convertView = (ImageView) new ImageView(Main.this);
            }

            // Create new file for the file path of the movie
            File file = new File(videoUrls.get(position));

            // Create variables for potential custom art check
            boolean potentialImage = false;
            String ImageFile = null;
            String[] potentialImageFiles = new String[]{file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf(".")) + ".jpg",
                    file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf(".")) + ".jpeg",
                    file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf(".")) + ".JPG",
                    file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf(".")) + ".JPEG"};

            // Check if each file exists and return if one does
            for (String potentialFile : potentialImageFiles) {
                if (!potentialImage) {
                    if (new File(potentialFile).exists()) {
                        potentialImage = true;
                        ImageFile = potentialFile;
                    }
                }
            }

            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 2;
            options.inPreferredConfig = Config.RGB_565;

            // Check if there's a custom cover art
            if (potentialImage) {
                Log.d("TEST", "POS: " + position); // this returns the correct value
                imageLoader.DisplayImage(ImageFile, Main.this, (ImageView) convertView, position);
            } else {
                Log.d("TEST", "POS: " + position); // this returns the correct value
                imageLoader.DisplayImage(coverFileNames.get(position), Main.this, (ImageView) convertView, position);
            }

            return convertView;
        }

И снова вот метод DisplayImage:

public void DisplayImage(String fileUrl, Activity activity, ImageView imageView, final int pos) {
            Log.v("Testing", "position = " + pos); // This returns 0, which is not correct
            imageViews.put(imageView, fileUrl);
            queuePhoto(fileUrl, activity, imageView);
            imageView.setImageResource(R.drawable.noposterlarge);
        }

1 Ответ

1 голос
/ 09 августа 2011

это просто невозможно

Добавить к началу DisplayImage

Log.v("DisplayImage", "position = " + position);

Если это 0

Изменить код вызова с

imageLoader.DisplayImage(coverFileNames.get(position), Main.this, (ImageView) convertView, position); 

до

imageLoader.DisplayImage(coverFileNames.get(position), Main.this, (ImageView) convertView, 2); 

Теперь, покажет ли это 2? Должно


Это означает, что в вашем коде вызова в строке imageLoader.DisplayImage() позиция всегда была по какой-то причине 0.

coverFileNames.get(position) всегда возвращает строку в position=0


Попробуйте удалить модификатор final из функции DisplayImage

public void DisplayImage(String fileUrl, Activity activity, ImageView imageView, int pos)
...