0

Ich mache View Pager für gleitende Bilder, aber View Pages zeigen immer wieder die gleichen Bilder und um Index-Wert korrekt aus JSON URL Images zu erhalten. Es kann nur den letzten Index von Bildern abrufen, die wiederholt angezeigt werden. Ich weiß nicht, was ich gemacht habe, verwechsle nur den letzten Index von Bildern, der nur in meinem Ansichtpager angezeigt wird.In View Pager zeigen die gleichen Bilder zum Abrufen der JSON URL in Android

Code:

ViewPager viewPager; 
private ZoomAdapter adapter; 
String oneimg; 
String singlepro, multipleimg, productpaths, sellers; 
ArrayList<ZoomimageModel> imgs; 
ArrayList<HashMap<String, String>> adlist; 
HashMap<String, String> map = new HashMap<String, String>(); 
// ArrayList<HashMap<String, String>> adlist 
public static final String TAG_IMAGE = "original_res"; 

@Override 
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, imgs); 
    // Binds the Adapter to the ViewPager 
    viewPager.setAdapter(adapter); 


} 

public void singleproduct() { 


    String productpath = productpaths; 
    String sid = sellers; 
    String cindex = singlepro; 
    int cindexs = Integer.parseInt(cindex); 
    String multiimg = multipleimg; 
    JSONArray multipleimage = null; 
    JSONArray singleimages = null; 
    try { 
     multipleimage = new JSONArray(multiimg); 
     singleimages = new JSONArray(multiimg); 


     horizontalimage = (LinearLayout) findViewById(R.id.gallery); 
     // final RelativeLayout r1=(RelativeLayout)findViewById(R.id.relative_border); 
     // frame=(FrameLayout)findViewById(R.id.framelayout); 
     ii = new ImageView[multipleimage.length()]; 
     ZoomimageModel zoom = new ZoomimageModel(); 

     imgs = new ArrayList<ZoomimageModel>(); 
     adlist = new ArrayList<HashMap<String, String>>(); 
     if (singleimages.length() > 0) { 
      for (int i = 0; i < singleimages.length(); i++) { 
       JSONObject singleimg = multipleimage.getJSONObject(i); 
       String oneimg = singleimg.getString("original_res"); 
       String singleiamges = productpath + sid + '/' + oneimg; 
         /*map.put(TAG_IMAGE,singleiamges); 
         adlist.add(map);*/ 
       zoom.setImageUrl(singleiamges); 
       imgs.add(zoom); 
       String ad = String.valueOf(adlist); 
       Toast.makeText(getApplicationContext(), ad, Toast.LENGTH_LONG).show(); 
       Log.d(ad, "show"); 

      } 

     } 


     adapter.notifyDataSetChanged(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

Adapter:

public class ZoomAdapter extends PagerAdapter { 
    LayoutInflater inflator; 
    ImageView imgDisplay; 
    Context context; 
    ArrayList<ZoomimageModel> slideShowImages; 

    DisplayImageOptions options; 

    public ZoomAdapter(Context context, ArrayList<ZoomimageModel> 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(); 
    } 

    // @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); 
     System.out.println("ImageUrl---------------------" + slideShowImages.get(position).getImageUrl()); 
     YelloPage.imageLoader.displayImage(zooms.getImageUrl(), imgDisplay, options); 
     container.addView(viewLayout); 
     return viewLayout; 
    } 


    @Override 
    public void destroyItem(ViewGroup container, int position, Object 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:

-- -- -- -- - beginning of crash 
    05 - 06 07: 00: 43.434 15557 - 15557/com.journaldev.navigationdrawer E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.journaldev.navigationdrawer, PID: 15557 
    java.lang.RuntimeException: Unable to start activity ComponentInfo { 
     com.journaldev.navigationdrawer/com.journaldev.navigationdrawer.Activity.Zoomproduct_Activity 
    }: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.journaldev.navigationdrawer.Adapter.ZoomAdapter.notifyDataSetChanged()' 
    on a null object reference 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2325) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2387) 
    at android.app.ActivityThread.access$800(ActivityThread.java: 151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1303) 
    at android.os.Handler.dispatchMessage(Handler.java: 102) 
    at android.os.Looper.loop(Looper.java: 135) 
    at android.app.ActivityThread.main(ActivityThread.java: 5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java: 372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 698) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.journaldev.navigationdrawer.Adapter.ZoomAdapter.notifyDataSetChanged()' 
    on a null object reference 
    at com.journaldev.navigationdrawer.Activity.Zoomproduct_Activity.singleproduct(Zoomproduct_Activity.java: 198) 
    at com.journaldev.navigationdrawer.Activity.Zoomproduct_Activity.onCreate(Zoomproduct_Activity.java: 102) 
    at android.app.Activity.performCreate(Activity.java: 5990) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2278) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2387)  
    at android.app.ActivityThread.access$800(ActivityThread.java: 151)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1303)  
    at android.os.Handler.dispatchMessage(Handler.java: 102)  
    at android.os.Looper.loop(Looper.java: 135)  
    at android.app.ActivityThread.main(ActivityThread.java: 5254)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java: 372)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 903)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 698)  

Wer helfen gerne schätzen.

Antwort

0

Sie rufen adapter.notifyDataSetChanged(); (In singleproduct()) vor Initialisierung ZoomAdapter (adapter = new ZoomAdapter(Zoomproduct_Activity.this, imgs);).

Bitte rufen Sie adapter.notifyDataSetChanged(); nach der Initialisierung von ZoomAdapter.

+0

ich bereits initialisiert danach nur i adapter.notifysetchangerd put(), tut aber nicht für mich Training –

+0

so können Sie Ihre Frage bearbeiten, wenn Sie ändern, dass – manolodewiner

+0

wenn nicht adapter.notifyDataSetChanged(); Was passiert –

0

mit unter Ihrem Codezeile ersetzen:

viewPager = (ViewPager) findViewById(R.id.pager); 
adapter = new ZoomAdapter(Zoomproduct_Activity.this, imgs); 
viewPager.setAdapter(adapter); 
adapter.notifyDataSetChanged(); 
+0

@Baba Ich habe ein Problem Anzeige nur letzten Index des Bildes drei oder vier Mal.Es kann Index richtig abrufen, aber nur letzten Index des Bildes wiederholt –

+0

ist Ihre API Antwort ist korrekt PLZ zuerst überprüfen Sie es –

+0

API-Antwort fein Ich habe alle Bilder von for-Schleife, aber ich weiß nicht, warum nur letzte Bildanzeige in View Pager –