Android volley singleton 和自定义 gridview 适配器

布兰登·邦

我正在使用自定义gridview适配器来显示带有 volley 单例的图像。但是当我运行它时它返回onErrorResponse看起来适配器甚至没有正确设置,是否与我设置适配器的地方有关?我试过设置它,onCreate但同样的错误。

适配器类看起来不错,所以我认为问题出在MainActivity.

主活动.java:

public class MainActivity extends AppCompatActivity {

private final int THUMBNAIL_SIZE = 250;
private final String KEY = "IMAGE";
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
private static final String URLS[] = {
    "http://10.0.2.2/Android%20A4_1/germany.png",
    "http://10.0.2.2/Android%20A4_1/indonesia.png",
    "http://10.0.2.2/Android%20A4_1/japan.png",
    "http://10.0.2.2/Android%20A4_1/sarawak.png",
    "http://10.0.2.2/Android%20A4_1/singapore.png",
    "http://10.0.2.2/Android%20A4_1/switzerland.png",
};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    for(int i = 0; i<URLS.length; i++) {
        LoadingImages(URLS[i]);
    }
}

private void LoadingImages(String url) {
    ImageLoader imageLoader = MySingleton.getInstance(getApplicationContext()).getImageLoader();
    imageLoader.get(url, new ImageLoader.ImageListener() {
        @Override
        public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
            Bitmap image = response.getBitmap();
            Bitmap thumbnail = ThumbnailUtils.extractThumbnail(image, THUMBNAIL_SIZE, THUMBNAIL_SIZE);
            bitmaps.add(thumbnail);

            GridView gridView = (GridView)findViewById(R.id.grid_layout);

            final ImageAdapter imageAdapter = new ImageAdapter(MainActivity.this, bitmaps);
            gridView.setAdapter(imageAdapter);

            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    Intent intent = new Intent(getApplicationContext(), Main2Activity.class);
                    intent.putExtra(KEY, URLS[i]);
                    startActivity(intent);
                }
            });
        }

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("error", error.getMessage());
        }
    });
}
}

适配器类:

public class ImageAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<Bitmap> bitmaps;

public ImageAdapter(Context context, ArrayList<Bitmap> bitmaps) {
    this.mContext = context;
    this.bitmaps = bitmaps;
}

@Override
public int getCount() {
    return 0;
}

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

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {


    if (view == null) {
      final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
      view = layoutInflater.inflate(R.layout.griditems, null);
      MyViewHolder myViewHolder = new MyViewHolder(view);
      view.setTag(myViewHolder);
    }
    MyViewHolder myViewHolder = (MyViewHolder)view.getTag();
    myViewHolder.img.setImageBitmap(bitmaps.get(i));

    return view;
}

public class MyViewHolder {
   public ImageView img;

   public MyViewHolder(View view) {
       img = view.findViewById(R.id.image1);
   }
}
}

我的单身:

public class MySingleton {
private static MySingleton instance;
private RequestQueue requestQueue;
private ImageLoader imageLoader;
private static Context context;

private MySingleton(Context context){
    this.context = context;
    requestQueue = Volley.newRequestQueue(context);
    imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
        private final LruCache<String, Bitmap> cache = new LruCache<>(6);
        @Override
        public Bitmap getBitmap(String url) {
            Bitmap bmp = cache.get(url);
            if (bmp == null) {
                System.out.println("Not in cache");
            } else {
                System.out.println("In cache");
            }

            return bmp;
        }

        @Override
        public void putBitmap(String url, Bitmap bitmap) {
            System.out.println("Put in cache");
            cache.put(url, bitmap);
        }
    });
}

public static synchronized MySingleton getInstance(Context context) {
    if (instance == null) {
        instance = new MySingleton(context);
    }
    return instance;
}

public ImageLoader getImageLoader() {
    return imageLoader;
}
}

Main2Activity:

public class Main2Activity extends AppCompatActivity {

private ImageView imageView;
private final String KEY = "IMAGE";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    imageView = (ImageView)findViewById(R.id.imageView);
    Bundle bundle = getIntent().getExtras();
    String url = bundle.getString(KEY);
    LoadingImages(url);
}

private void LoadingImages(String url) {
    final ImageLoader imageLoader = MySingleton.getInstance(getApplicationContext()).getImageLoader();
    imageLoader.get(url, new ImageLoader.ImageListener() {
        @Override
        public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
            Bitmap bitmap = response.getBitmap();
            imageView.setImageBitmap(bitmap);
        }

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("Error", error.getMessage());
        }
    });
}

}

苏尔什马达帕蒂

改变这个方法

@Override
public int getCount() {
return 0;
}

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

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

@Override
public int getCount() {
return bitmaps.size;
}

@Override
public Object getItem(int i) {
return bitmaps.get(i);
}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于GridView的Android文本和图像适配器的片段

来自分类Dev

使用自定义适配器填充GridView的困难

来自分类Dev

为gridview样式自定义适配器

来自分类Dev

Android上的GridView适配器(错误)

来自分类Dev

Android自定义适配器如何工作?

来自分类Dev

android:带有自定义适配器的AutoCompleteTextView

来自分类Dev

使用自定义适配器的Android数据绑定

来自分类Dev

Android自定义阵列适配器未运行

来自分类Dev

如何在Android中自定义适配器?

来自分类Dev

Android DataBinding自定义绑定适配器警告

来自分类Dev

Android从适配器自定义类调用findViewById

来自分类Dev

Android ListView onClickListener自定义适配器

来自分类Dev

Android:使用自定义适配器设置AutoCompleteTextView

来自分类Dev

android:带有自定义适配器的AutoCompleteTextView

来自分类Dev

Android创建自定义适配器

来自分类Dev

Android自定义ListView /适配器

来自分类Dev

Android ListView onItemclick以及自定义适配器

来自分类Dev

参数错误android自定义适配器

来自分类Dev

如何在Android中管理自定义适配器onPause和onResume

来自分类Dev

Android:具有ViewHolder,OnCheckedChangedListener和TextChangedListener的自定义适配器

来自分类Dev

具有ListView片段和自定义ListView适配器的Android Pull-to-Refresh

来自分类Dev

自定义ArrayList适配器和游标的Android怪异行为

来自分类Dev

使用自定义适配器和视图持有器的Android列表视图

来自分类Dev

自定义ArrayList适配器和游标的Android怪异行为

来自分类Dev

Android Java:用于滚动和过滤问题的列表视图的自定义适配器

来自分类Dev

Android使用适配器从GridView获取视图

来自分类Dev

Android使用适配器从GridView获取视图

来自分类Dev

Android:如何使GridView充满2个适配器

来自分类Dev

如何为自定义图像适配器刷新GridView?

Related 相关文章

  1. 1

    用于GridView的Android文本和图像适配器的片段

  2. 2

    使用自定义适配器填充GridView的困难

  3. 3

    为gridview样式自定义适配器

  4. 4

    Android上的GridView适配器(错误)

  5. 5

    Android自定义适配器如何工作?

  6. 6

    android:带有自定义适配器的AutoCompleteTextView

  7. 7

    使用自定义适配器的Android数据绑定

  8. 8

    Android自定义阵列适配器未运行

  9. 9

    如何在Android中自定义适配器?

  10. 10

    Android DataBinding自定义绑定适配器警告

  11. 11

    Android从适配器自定义类调用findViewById

  12. 12

    Android ListView onClickListener自定义适配器

  13. 13

    Android:使用自定义适配器设置AutoCompleteTextView

  14. 14

    android:带有自定义适配器的AutoCompleteTextView

  15. 15

    Android创建自定义适配器

  16. 16

    Android自定义ListView /适配器

  17. 17

    Android ListView onItemclick以及自定义适配器

  18. 18

    参数错误android自定义适配器

  19. 19

    如何在Android中管理自定义适配器onPause和onResume

  20. 20

    Android:具有ViewHolder,OnCheckedChangedListener和TextChangedListener的自定义适配器

  21. 21

    具有ListView片段和自定义ListView适配器的Android Pull-to-Refresh

  22. 22

    自定义ArrayList适配器和游标的Android怪异行为

  23. 23

    使用自定义适配器和视图持有器的Android列表视图

  24. 24

    自定义ArrayList适配器和游标的Android怪异行为

  25. 25

    Android Java:用于滚动和过滤问题的列表视图的自定义适配器

  26. 26

    Android使用适配器从GridView获取视图

  27. 27

    Android使用适配器从GridView获取视图

  28. 28

    Android:如何使GridView充满2个适配器

  29. 29

    如何为自定义图像适配器刷新GridView?

热门标签

归档