1

私はnostra13UniversalImageLoaderを使用して一連の画像をグリッドビューにロードし、それが美しく機能していますが、ユーザーがメニューの項目をクリックすると、画像を変更する必要があります(新しいページを開くのではなく、リロード/更新します)同じページの画像)

私はそのようにイメージローダーを呼んでいます:

protected ImageLoader imageLoader;

imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(this));

Bundle bundle = getIntent().getExtras();

imageUrls = bundle.getStringArray(Extra.IMAGES);

options = new DisplayImageOptions.Builder()
    .showStubImage(R.drawable.stub_image)
    .showImageForEmptyUri(R.drawable.image_for_empty_url)
    .cacheInMemory()
    .cacheOnDisc()
    .bitmapConfig(Bitmap.Config.RGB_565)
    .build();

final GridView main_gridview = (GridView)findViewById(R.id.main_gridview);
main_gridview.setAdapter(new ImageAdapter());

public class ImageAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return imageUrls.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final ImageView imageView;
            if (convertView == null) {
                imageView = (ImageView) getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
            } else {
                imageView = (ImageView) convertView;
            }

            imageLoader.displayImage(imageUrls[position], imageView, options);

            return imageView;
        }
    }

ご覧のとおり、Extras.IMAGESはさまざまなURLを含む文字列配列であるため、ユーザーがメニューの上記のボタンをクリックすると、新しいURLを含む配列が表示されますが、画像アダプターを「更新」する方法がわかりません。 ?

その場でグリッドビューに画像を「追加」できることは理解していますが、アレイ全体を完全に更新できるかどうかは、nostraのドキュメントには記載されていません。

どんな助けでも大歓迎です。:)

PS。これに対する答えが明らかな場合は申し訳ありませんが、私はAndroid開発に約1週間しか入っていません。

4

1 に答える 1

3

私はそれを解決しました。ImageUrlsを更新された画像の文字列配列に設定し、次にImageAdapterオブジェクトを上部で宣言し、そのオブジェクトに対して次のようにnotifyDataSetChanged()を呼び出しました。

ImageAdapter imgAdapter;

main_gridview.setAdapter(imgAdapter);

imgAdapter.notifyDataSetChanged();
于 2013-02-06T14:39:49.870 に答える