0

私のアプリケーションでは、アダプターで ImageLoader を使用して lsit ビュー項目で画像をロードするリスト ビューがあります。

アクティビティの oncreate で、次のようなリスト ビュー アイテムの URL を取得します。

private void fetchImages() {
        // TODO Auto-generated method stub

        //fetching the list
        mCustomProgressDialog = CustomProgressDialog.createDialog(Group_SharePictureMainActivity.this, "", "");
        mCustomProgressDialog.show();
        new Thread(){
            @Override
            public void run() {
                APIVariables apiVariables = new APIVariables();
                String getGroupImagesURL = apiVariables.getGroupImages(GroupsActivity.Group_ID);
                groupImages = ParseValues.getGroupImages(getGroupImagesURL);
                handlerFetchGroupImages.sendEmptyMessage(0);
            }
        }.start();

    }

ここに私の問題があります-インターネット接続が利用できない場合、既に生成されたリストビュー(インターネットが利用可能な場合)が表示される状況を実装したいです。

ネットワーク接続が利用できない場合、リスト ビューの以前の状態を維持することは可能ですか??

ありがとう

4

3 に答える 3

0

サーバーからの画像をリストビューに表示するとします。インターネット接続がオフのときに画像をキャッシュしてロードできます。

画像の遅延読み込み。https://github.com/thest1/LazyList。キャッシュを使用します。

imageLoader=new ImageLoader(activity.getApplicationContext());

カスタムリストアダプタのgetviewで

 ImageView image=(ImageView)convertView.findViewById(R.id.imageview);
 imageLoader.DisplayImage("url", image);

LazyLoadingのImageLoaderクラス。

public void DisplayImage(String url, ImageView imageView)
{
    System.out.println("Url................."+url);
    imageViews.put(imageView, url);
    Bitmap bitmap=memoryCache.get(url);//check if bitmap is there in cache. url is the key
    if(bitmap!=null)
        imageView.setImageBitmap(bitmap);//display if it is present.
    else
    {
        queuePhoto(url, imageView); //cache and display image.
        imageView.setImageResource(stub_id);//display a dummy image until image is dowloaded and displayed.
    }
}

オープンソースのユニバーサルイメージローダーもあります。https://github.com/nostra13/Android-Universal-Image-Loader。画像を非同期に表示します。キャッシュを使用します。

ビットマップをキャッシュする他の方法。http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

于 2013-03-18T06:31:55.127 に答える
0

LRUCacheクラスを使用して、アプリケーションメモリにダウンロードされた画像をキャッシュできます。インターネットがない場合は、キャッシュされた画像を使用してlistViewに表示できます。インターネットがある場合は、新しい画像をフェッチできます。古い画像が不要になった場合は、新しい画像のダウンロードを開始する前にキャッシュをクリアしてください。

画像のキャッシュの詳細については、このリンクで詳しく説明されています。そのページで提供されているサンプルアプリケーションを使用できます。

また、これをチェックしてください。

于 2013-03-18T06:31:55.667 に答える
0

次のアプローチを試すことができます。

インターネット接続が利用可能になったら、画像をダウンロードして内部メモリに保存します。他の詳細を保存したい場合は、それを SQLite データベースに保存することもできます。ネットワークが利用できない場合は、データベースとメモリからそれぞれ値と画像を取得し、リスト ビュー内にロードします。

于 2013-03-18T06:39:21.957 に答える