2

私の Android プロジェクト レイアウト xml ファイルには 3 つのボタンがあります。ショー、イベント、ホームです。ボタンをクリックすると、URL から画像がダウンロードされ、キャッシュに保存されます。というわけで、クリックしたらダウンロード完了です。表示ボタンをもう一度クリックすると、キャッシュからダウンロードした画像が表示されます。

問題は、すべての画像を 1 つのキャッシュ ディレクトリにダウンロードすることです。ボタンを個別にクリックすると、デフォルトの画像が読み込まれます。画像の識別ができないためです。次のように私のコード。

public FileCache(Context context){
        //Find the dir to save cached images
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){
            cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"TNLRadio/res/shows");
            cacheDirEvent=new File(android.os.Environment.getExternalStorageDirectory(),"TNLRadio/res/events");
            cacheDirPromotion=new File(android.os.Environment.getExternalStorageDirectory(),"TNLRadio/res/promotion");
        }
        else{
            cacheDir=context.getCacheDir();
            cacheDirEvent=context.getCacheDir();
            cacheDirPromotion=context.getCacheDir();
        }
        if(!cacheDir.exists()&& !cacheDirEvent.exists() && !cacheDirPromotion.exists()){
            cacheDir.mkdirs();
            cacheDirEvent.mkdir();
            cacheDirPromotion.mkdir();
        }
    }

    public File getFile(String url){
        //I identify images by hashcode. Not a perfect solution, good for the demo.
        String filename=String.valueOf(url.hashCode());
        //Another possible solution (thanks to grantland)
        //String filename = URLEncoder.encode(url);
        File f = new File(cacheDir, filename);
        return f;

    } 

助けてください。私はこの質問に行き詰まっています

その後、私はこれをしました。でも同じ答え……なんで?

public FileCache(Context context,int i){
        //Find the dir to save cached images
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)&& i==3)
            cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"TNLRadio/res/shows");
        else if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)&& i==2)
            cacheDirEvent=new File(android.os.Environment.getExternalStorageDirectory(),"TNLRadio/res/events");
        else if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED) && i==1)
            cacheDirHome=new File(android.os.Environment.getExternalStorageDirectory(),"TNLRadio/res/home");
        else 
            cacheDir=context.getCacheDir();
            cacheDirEvent=context.getCacheDir();
            cacheDirHome=context.getCacheDir();
        if(!cacheDir.exists())
            cacheDir.mkdirs();
        else if (!cacheDirHome.exists())
            cacheDirHome.mkdirs();
        else if  (!cacheDirEvent.exists())
            cacheDirEvent.mkdirs();

    }

    public File getFile(String url){
        //I identify images by hashcode. Not a perfect solution, good for the demo.
        String filename=String.valueOf(url.hashCode());
        //Another possible solution (thanks to grantland)
        //String filename = URLEncoder.encode(url);
        if(url.substring(0, 26).equals("http://tnlradio/promotions")){
        File f = new File(cacheDirHome, filename);
        return f;}
        else if(url.equals("http://stream.tnlradio.com/images/dilshan-ishara.jpg")){
            File f = new File(cacheDirEvent, filename);
            return f;}
        else{
            File f = new File(cacheDir, filename);
            return f;
        }

    }

助けてください

4

2 に答える 2