1

画像のグリッドビュー表示とその上にテキストビューを表示するAndroidアプリを開発しています。今まで、ドローアブルからの画像のグリッドビュー表示を行いました。配列リスト変数でjsonからテキスト値を取得しました。

画像のみを表示するために使用したコード:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_front_page);


    GridView grid=(GridView)findViewById(R.id.maincatgrid);

     grid.setAdapter(new ImageAdapter(this));
     grid.setColumnWidth( 170 );
     grid.setVerticalSpacing(20 );
     grid.setStretchMode( GridView.STRETCH_COLUMN_WIDTH );
     grid.setNumColumns( GridView.AUTO_FIT );


}

       public class ImageAdapter extends BaseAdapter {

    private Context mContext;


    public ImageAdapter(Context c){
        mContext = c;
    }

      public Integer[] mThumbIds = {
                R.drawable.image1, 
                R.drawable.image2,
                R.drawable.image3,
                R.drawable.image4, 
                R.drawable.image5,
                R.drawable.image6, 
                R.drawable.image7, 
                R.drawable.image8, 


        };

    public int getCount() {
        // TODO Auto-generated method stub
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return mThumbIds[position];
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View MyView = convertView;
        // TODO Auto-generated method stub

        ImageView imageView;
        if (convertView == null) {

            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(170, 150));
            imageView.setAdjustViewBounds(false);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);



        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);

        return imageView;
    }



}
 }

15 個の値を含む非同期タスクから textview 値を取得しています。mThumbIds から画像がない場合 (つまり、textvalues>images)、デフォルトの画像 R.drawable.no_image を配置する必要があります。これを達成する方法はありますか?前もって感謝します。

4

1 に答える 1

1

https://github.com/nostra13/Android-Universal-Image-Loader .

ローカルまたはサーバーから画像をロードできます。

Lazy List に基づいています (同じ原理で動作します)。しかし、それは他の多くの構成を持っています。より多くの構成オプションを提供する Universal Image Loader を使用することをお勧めします。ダウンロードに失敗した場合、エラー画像を表示できます。角を丸くした画像を表示できます。ディスクまたはメモリにキャッシュできます。画像を圧縮できます。

カスタム アダプター コンストラクターで

File cacheDir = StorageUtils.getOwnCacheDirectory(activity context, "your folder");//for caching

// Get singletone instance of ImageLoader
imageLoader = ImageLoader.getInstance();
// Create configuration for ImageLoader (all options are optional)
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
  // You can pass your own memory cache implementation
 .discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
 .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
 .enableLogging()
 .build();
 // Initialize ImageLoader with created configuration. Do it once.
 imageLoader.init(config);
 options = new DisplayImageOptions.Builder()
 .showStubImage(R.drawable.stub_id)//display stub image untik image is loaded
 .cacheInMemory()
 .cacheOnDisc()
 .displayer(new RoundedBitmapDisplayer(20))
 .build();

あなたの getView() で

  ImageView image=(ImageView)vi.findViewById(R.id.imageview); 
  imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options.

ニーズに合わせて他のオプションを設定できます。

遅延読み込み/ユニバーサル イメージ ローダーに加えて、ホルダーを表示してスムーズなスクロールとパフォーマンスを実現できます。http://developer.android.com/training/improving-layouts/smooth-scrolling.html .

于 2013-03-28T13:27:30.023 に答える