【发布时间】:2016-05-07 06:11:15
【问题描述】:
我在 android 中显示 Image Slider 的图像时遇到问题。我从 JSON 中获取图像,但总是只显示索引的最后一个图像,假设我是否可以一次又一次地移动 View Pager 相同的图像以显示图像滑入安卓。 我不知道是什么问题,我几乎尽我所能,但我真的找不到那个错误。 任何人都可以帮助解决我的问题。
代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zoomproduct_);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.b2)
.showImageForEmptyUri(R.drawable.b2)
.showImageOnFail(R.drawable.b2)
.build();
/******************** this is for single page product ***********************/
Intent singleproductpage = getIntent();
singlepro = singleproductpage.getStringExtra("currentinedx");
Intent multipleimages = getIntent();
multipleimg = multipleimages.getStringExtra("multipleimages");
Intent productpath = getIntent();
productpaths = productpath.getStringExtra("productpath");
Intent seller = getIntent();
sellers = seller.getStringExtra("sellerid");
// pDialog = new ProgressDialog(Zoomproduct_Activity.this);
// pDialog.setMessage("Please wait...");
// pDialog.setCancelable(false);
singleproduct();
viewPager = (ViewPager) findViewById(R.id.pager);
// Pass results to ViewPagerAdapter Class
adapter = new ZoomAdapter(Zoomproduct_Activity.this, adlist);
// Binds the Adapter to the ViewPager
viewPager.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
multipleimage = new JSONArray(multiimg);
if (multipleimage.length() > 0) {
for (int i = 0; i < multipleimage.length(); i++) {
JSONObject singleimg = multipleimage.getJSONObject(i);
/*oneimg = singleimg.getString("original_res");
String singleImages= productpath+sid+ '/'+ oneimg;*/
// zoom.setImageUrl(productpaths+sellers+ '/'+singleimg.getString("original_res"));
// imgs.add(zoom);
String imagesone = productpaths + sellers + '/' + singleimg.getString("original_res");
map.put(TAG_IMAGE, imagesone);
adlist.add(map);
String imgs1 = String.valueOf(adlist);
//String zoom1=String.valueOf(imgs1);
// Log.d(zoom1,"zoom");
Log.d(imgs1, "ararlist");
}
}
适配器:
public class ZoomAdapter extends PagerAdapter {
LayoutInflater inflator;
ImageView imgDisplay;
Context context;
// ArrayList<ZoomimageModel> slideShowImages;
// ArrayList<String> slideShowImages;
private ArrayList < HashMap < String, String >> slideShowImages;
HashMap < String, String > plotimages;
DisplayImageOptions options;
public ZoomAdapter(Context context, ArrayList < HashMap < String, String >> slideShowImages) {
this.context = context;
this.slideShowImages = slideShowImages;
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.slip1)
.showImageForEmptyUri(R.drawable.b2)
.showImageOnFail(R.drawable.ic_drawer)
.build();
}
@Override
public int getCount() {
return slideShowImages.size();
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
// @Override
/* public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}*/
// @Override
public Object instantiateItem(ViewGroup container, final int position) {
inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View viewLayout = inflator.inflate(R.layout.productzoomrow, container,
false);
imgDisplay = (ImageView) viewLayout.findViewById(R.id.imgDisplay);
// ZoomimageModel zooms=slideShowImages.get(position);
plotimages = slideShowImages.get(position);
// System.out.println("ImageUrl---------------------"+slideShowImages.get(position).getImageUrl());
System.out.println("ImageUrl---------------------" + plotimages.get(Zoomproduct_Activity.TAG_IMAGE));
// YelloPage.imageLoader.displayImage(zooms.getImageUrl(), imgDisplay, options);
YelloPage.imageLoader.displayImage(plotimages.get(Zoomproduct_Activity.TAG_IMAGE), imgDisplay, options);
container.addView(viewLayout);
return viewLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// ((ViewPager) container).removeView((ImageView) object);
(container).removeView((RelativeLayout) object);
// container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
/* @Override
public void destroyItem(ViewGroup container, int position, Object object)
{
((ViewPager) container).removeView((ImageView) object);
}*/
}
Logcat 显示图像:
[05 - 07 02: 06: 15.445 26970: 26970 D / [{
original_res = http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-171452579105.jararlist
[05 - 07 02: 06: 15.445 26970: 26970 D / [{
original_res = http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-791452579106.jararlist
[05 - 07 02: 06: 15.445 26970: 26970 D / [{
original_res = http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-971452579106.jararlist
[05 - 07 02: 06: 15.445 26970: 26970 D / [{
original_res = http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-341452579106.jararlist
[05 - 07 02: 06: 15.445 26970: 26970 D / [{
original_res = http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-891452579106.jararlist
[05 - 07 02: 06: 15.445 26970: 26970 D / [{
original_res = http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-441452579106.jararlist
05 - 07 02: 06: 15.445 26970 - 26970 / com.journaldev.navigationdrawer D / lenovo - a6000 - 171452579105. jpeg: images
05 - 07 02: 06: 15.445 26970 - 26970 / com.journaldev.navigationdrawer D / lenovo - a6000 - 791452579106. jpeg: images
05 - 07 02: 06: 15.446 26970 - 26970 / com.journaldev.navigationdrawer D / lenovo - a6000 - 971452579106. jpeg: images
05 - 07 02: 06: 15.446 26970 - 26970 / com.journaldev.navigationdrawer D / lenovo - a6000 - 341452579106. jpeg: images
05 - 07 02: 06: 15.446 26970 - 26970 / com.journaldev.navigationdrawer D / lenovo - a6000 - 891452579106. jpeg: images
05 - 07 02: 06: 15.446 26970 - 26970 / com.journaldev.navigationdrawer D / lenovo - a6000 - 441452579106. jpeg: images
05 - 07 02: 06: 15.448 754 - 7094 / system_process V / WindowManager: Adding window Window {
39992643 u0 com.journaldev.navigationdrawer / com.journaldev.navigationdrawer.Activity.Zoomproduct_Activity
}
at 4 of 9(after Window {
2 fb8c08e u0 com.journaldev.navigationdrawer / com.journaldev.navigationdrawer.Activity.singleshooppingcart
})
05 - 07 02: 06: 15.464 26970 - 26970 / com.journaldev.navigationdrawer I / System.out: ImageUrl-- -- -- -- -- -- -- -- -- -- - http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-441452579106.jpeg
05 - 07 02: 06: 15.477 26970 - 26970 / com.journaldev.navigationdrawer I / System.out: ImageUrl-- -- -- -- -- -- -- -- -- -- - http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-441452579106.jpeg
05 - 07 02: 06: 15.535 26970 - 27049 / com.journaldev.navigationdrawer W / EGL_emulation: eglSurfaceAttrib not implemented
05 - 07 02: 06: 15.536 26970 - 27049 / com.journaldev.navigationdrawer W / OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xe2266e00,
error = EGL_SUCCESS
05 - 07 02: 06: 15.792 754 - 780 / system_process I / ActivityManager: Displayed com.journaldev.navigationdrawer / .Activity.Zoomproduct_Activity: +358 ms
05 - 07 02: 06: 16.062 715 - 715 / ? W / SurfaceFlinger : couldn 't log to binary event log: overflow.
05 - 07 02: 06: 20.092 26970 - 26970 / com.journaldev.navigationdrawer I / System.out: ImageUrl-- -- -- -- -- -- -- -- -- -- - http: //192.168.0.33/cartwebsite3/cdn-images/prd/1/lenovo-a6000-441452579106.jpeg
05 - 07 02: 06: 20.256 754 - 1067 / system_process D / WifiService: acquireWifiLockLocked: WifiLock {
NlpWifiLock type = 2 binder = android.os.BinderProxy @997c048
}
很高兴解决我的问题
【问题讨论】:
-
您能解释一下为什么您使用
HashMap中的ArrayList而不是只使用String中的ArrayList并按位置获取image。 -
您的代码中的问题是您对每个图像使用相同的
IMAGE_TAG,因此将显示添加到HashMap的最后一张图像 -
在我不使用 HashMap 之前,我使用模型来设置和获取图像,但那一个也是我得到相同的图像
-
你明白我的意思吗?由于您在
HashMap中使用相同的Key用于图像,它会返回最后一张图像,只需尝试记录HashMap大小它将是 1 -
如何更改我的代码以获取所有图像,请告诉我
标签: android android-layout android-studio android-viewpager android-imageview