在 View Pager 中仅在 android 中重复显示来自 Json 的最后一张图片
In View Pager displayed only last Images from Json repeatedly in android
我在 android.I 中显示图像滑块的图像时遇到问题,我正在从 JSON 中获取图像,但始终只显示索引的最后一个图像,假设我可以移动 View Pager 相同的图像在 Android 中一次又一次地显示图像滑动。
我不知道是什么问题,我几乎尽我所能但我真的找不到那个错误。
任何人都可以帮助解决我的问题。
代码:
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
}
很高兴解决了我的问题
您可以将 ArrayList<HashMap<String,String>>
更改为 ArrayList<String>
,因为您的代码似乎不需要 HashMap
。
接下来在 for
循环中将图像路径添加到 HashMap
而不是直接将其添加到 ArrayList
,
然后在 PagerAdapter
的 getView()
中使用 slideShowImages.get(position)
、
从 ArrayList<>
获取图像
我在 android.I 中显示图像滑块的图像时遇到问题,我正在从 JSON 中获取图像,但始终只显示索引的最后一个图像,假设我可以移动 View Pager 相同的图像在 Android 中一次又一次地显示图像滑动。 我不知道是什么问题,我几乎尽我所能但我真的找不到那个错误。 任何人都可以帮助解决我的问题。
代码:
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
}
很高兴解决了我的问题
您可以将 ArrayList<HashMap<String,String>>
更改为 ArrayList<String>
,因为您的代码似乎不需要 HashMap
。
接下来在 for
循环中将图像路径添加到 HashMap
而不是直接将其添加到 ArrayList
,
然后在 PagerAdapter
的 getView()
中使用 slideShowImages.get(position)
、
ArrayList<>
获取图像