java– 如何正确添加侦听器以滑行

java– 如何正确添加侦听器以滑行,第1张

概述我正在使用滑动来显示专辑封面但不知何故我无法显示它.我想添加侦听器以滑动以查找错误,但它无法正常工作.它显示错误说:listener(com.bumptech.glide.request.RequestListener)incom.bumptech.glide.DrawableRequestBuildercannotbeappliedto(anonymouscom.bumptech.gli

我正在使用滑动来显示专辑封面但不知何故我无法显示它.我想添加侦听器以滑动以查找错误,但它无法正常工作.它显示错误说:

Listener(com.bumptech.glIDe.request.RequestListener) in com.bumptech.glIDe.DrawableRequestBuilder cannot be applIEd to (anonymous com.bumptech.glIDe.request.RequestListener)

PlayListActivity.java:

package com.example.dell_1.myapp3;import androID.app.Activity;import androID.database.Cursor;import androID.media.MediaPlayer;import androID.net.Uri;import androID.os.Bundle;import androID.os.Environment;import androID.provIDer.MediaStore;import androID.support.design.Widget.Snackbar;import androID.util.Log;import androID.vIEw.VIEw;import androID.Widget.AdapterVIEw;import androID.Widget.ArrayAdapter;import androID.Widget.ImageVIEw;import androID.Widget.ListVIEw;import androID.Widget.Toast;import java.io.file;import java.io.IOException;import com.bumptech.glIDe.GlIDe;import com.bumptech.glIDe.load.resource.drawable.GlIDeDrawable;import com.bumptech.glIDe.request.RequestListener;import com.bumptech.glIDe.request.target.Target;public class PlayListActivity extends Activity {    private String[] mAudioPath;    private MediaPlayer mMediaPlayer;    private String[] mMusicList;    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_play_List);        mMediaPlayer = new MediaPlayer();        ListVIEw mListVIEw = (ListVIEw) findVIEwByID(R.ID.List);        mMusicList = getAudioList();        ArrayAdapter<String> mAdapter = new ArrayAdapter<>(this,                androID.R.layout.simple_List_item_1, mMusicList);        mListVIEw.setAdapter(mAdapter);        mListVIEw.setonItemClickListener(new AdapterVIEw.OnItemClickListener() {            @OverrIDe            public voID onItemClick(AdapterVIEw<?> arg0, VIEw vIEw, int arg2,                                    long arg3) {                try {                    playSong(mAudioPath[arg2]);                } catch (IllegalArgumentException e) {                    e.printstacktrace();                } catch (IllegalStateException e) {                    e.printstacktrace();                } catch (IOException e) {                    e.printstacktrace();                }            }        });    }    private String[] getAudioList() {        final Cursor mCursor = getContentResolver().query(                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,                new String[]{MediaStore.Audio.Media.disPLAY_name, MediaStore.Audio.Media.DATA}, null, null,                "LOWER(" + MediaStore.Audio.Media.Title + ") ASC");        int count = mCursor.getCount();        String[] songs = new String[count];        mAudioPath = new String[count];        int i = 0;        if (mCursor.movetoFirst()) {            do {                songs[i] = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.disPLAY_name));                mAudioPath[i] = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));                i++;            } while (mCursor.movetoNext());        }        mCursor.close();        return songs;    }    private voID playSong(String path) throws IllegalArgumentException,            IllegalStateException, IOException {        setContentVIEw(R.layout.activity_androID_building_music_player);        Log.d("ringtone", "playSong :: " + path);        mMediaPlayer.reset();        mMediaPlayer.setDataSource(path);//mMediaPlayer.setLooPing(true);        mMediaPlayer.prepare();        mMediaPlayer.start();        asd();    }    public voID asd(){        file music = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);// Tested with music from windows 7's c:\Users\Public\Music\Sample Music        String mAudioPath = new file(music, "MaID with the Flaxen Hair.mp3").getabsolutePath();        ImageVIEw imageVIEw = (ImageVIEw) findVIEwByID(R.ID.coverart);        GlIDe                .with(this)                .load(new AudioCover(mAudioPath))                .placeholder(R.drawable.adele1)                .error(R.drawable.adele1)                .Listener(new RequestListener<Uri, GlIDeDrawable>() {                    @OverrIDe public boolean onException(Exception e, Uri model, Target<GlIDeDrawable> target, boolean isFirstResource) {                        return false;                    }                    @OverrIDe public boolean onResourceReady(GlIDeDrawable resource, Uri model, Target<GlIDeDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {                        // easy                        return false;                        // impossible?                    }                })                .into(imageVIEw)        ;    }}

AudioCover.java:

package com.example.dell_1.myapp3;import androID.content.Context;import androID.media.MediaMetadataRetrIEver;import com.bumptech.glIDe.*;import com.bumptech.glIDe.load.data.DataFetcher;import com.bumptech.glIDe.load.model.GenericLoaderFactory;import com.bumptech.glIDe.load.model.ModelLoader;import com.bumptech.glIDe.load.model.ModelLoaderFactory;import com.bumptech.glIDe.load.model.stream.StreamModelLoader;import java.io.ByteArrayinputStream;import java.io.file;import java.io.fileinputStream;import java.io.fileNotFoundException;import java.io.IOException;import java.io.inputStream;public class AudioCover {    final String path;    public AudioCover(String path) {        this.path = path;    }}class AudioCoverLoader implements StreamModelLoader<AudioCover> {    @OverrIDe public DataFetcher<inputStream> getResourceFetcher(AudioCover model, int wIDth, int height) {        return new AudioCoverFetcher(model);    }    static class Factory implements ModelLoaderFactory<AudioCover, inputStream> {        @OverrIDe public ModelLoader<AudioCover, inputStream> build(Context context, GenericLoaderFactory factorIEs) {            return new AudioCoverLoader();        }        @OverrIDe public voID teardown() {        }    }}class AudioCoverFetcher implements DataFetcher<inputStream> {    private final AudioCover model;    private fileinputStream stream;    public AudioCoverFetcher(AudioCover model) {        this.model = model;    }    @OverrIDe public String getID() {        return model.path;    }    @OverrIDe public inputStream loadData(Priority priority) throws Exception {        MediaMetadataRetrIEver retrIEver = new MediaMetadataRetrIEver();        try {            retrIEver.setDataSource(model.path);            byte[] picture = retrIEver.getEmbeddedPicture();            if (picture != null) {                return new ByteArrayinputStream(picture);            } else {                return fallback(model.path);            }        } finally {            retrIEver.release();        }    }    private static final String[] FALLBACKS = {"cover.jpg", "album.jpg", "folder.jpg"};    private inputStream fallback(String path) throws fileNotFoundException {        file parent = new file(path).getParentfile();        for (String fallback : FALLBACKS) {            // Todo make it smarter by enumerating folder contents and filtering for files            // example algorithm for that: http://askubuntu.com/questions/123612/how-do-i-set-album-artwork            file cover = new file(parent, fallback);            if (cover.exists()) {                return stream = new fileinputStream(cover);            }        }        return null;    }    @OverrIDe public voID cleanup() {        // already cleaned up in loadData and ByteArrayinputStream will be GC'd        if (stream != null) {            try {                stream.close();            } catch (IOException ignore) {                // can't do much about it            }        }    }    @OverrIDe public voID cancel() {        // cannot cancel    }}

解决方法:

RequestListener< T,R>期望T是你在load()中提供的模型,在你的情况下T =?超级AudioCover(documentation):

// ....Listener(new RequestListener<AudioCover, GlIDeDrawable>() {    @OverrIDe    public boolean onException(Exception e, AudioCover model, Target<GlIDeDrawable> target, boolean isFirstResource) {        return false;    }    @OverrIDe    public boolean onResourceReady(GlIDeDrawable resource, AudioCover model, Target<GlIDeDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {        return false;    }})// ...

注意,自版本4.0.0-RC0 RequestListener< T,R>不推荐使用RequestListener< R>,在新的javadoc中查找更多信息.

总结

以上是内存溢出为你收集整理的java – 如何正确添加侦听器以滑行全部内容,希望文章能够帮你解决java – 如何正确添加侦听器以滑行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1119581.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存