2013-02-16 9 views
6

Il mio logcat in stampa la prima volta assumere la posizione 0 dopo aver ripetuto questo metodo e aver preso la posizione 1, non ho bisogno di ripetere questo metodo.Come non ripetere l'oggetto instantiateItem() in PagerAdapter in android

public Object instantiateItem(ViewGroup container, int position) { 

    Context context = MainActivity.this; 

Log.d("position","position" +position); 
    ImageView imageView = new ImageView(context); 

    int padding = context.getResources().getDimensionPixelSize(
     R.dimen.padding_medium); 
    imageView.setPadding(padding, padding, padding, padding); 
    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
    imageView.setImageResource(mImages[position]); 

    ((ViewPager) container).addView(imageView, 0); 

    return imageView; 

} 

Questo codice in slitta immagine lavorare con successo, ma slitta di immagine prima e l'ultima di stampa sbagliato della posizione nel logcat.please mi aiuti. grazie.

Edit:

public class MainActivity extends Activity { 

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


    viewPager = (ViewPager) findViewById(R.id.view_pager); 
    ImagePagerAdapter adapter = new ImagePagerAdapter(); 
    adapter.notifyDataSetChanged(); 
    viewPager.setAdapter(adapter); 

    } 

    private class ImagePagerAdapter extends PagerAdapter { 

    private int[] mImages = new int[] { 
     R.drawable.chiang_mai, 
     R.drawable.himeji, 
     R.drawable.petronas_twin_tower, 
     R.drawable.ulm 
    }; 
    @Override 
    public int getItemPosition(Object object) { 
     // TODO Auto-generated method stub 
     return POSITION_NONE; 
    } 


    @Override 
    public int getCount() { 
     return mImages.length; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == ((ImageView) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     Context context = MainActivity.this; 

    Log.d("position","position" +position); 
     ImageView imageView = new ImageView(context); 

     int padding = context.getResources().getDimensionPixelSize(
      R.dimen.padding_medium); 
     imageView.setPadding(padding, padding, padding, padding); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     imageView.setImageResource(mImages[position]); 

     ((ViewPager) container).addView(imageView, 0); 

     return imageView; 

    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     // viewPager.getAdapter().notifyDataSetChanged(); 
     ((ViewPager) container).removeView((ImageView) object); 
    } 
    } 

@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 

    super.onDestroy(); 
} 

} 

Questo codice in posizione di stampa sbagliato nel logcat quando scivolo slide image lato destro dell'immagine destra e sinistra side.i bisogno quando la posizione di incremento e sinistra immagine della diapositiva decremento position.please mi aiutano . Grazie.

+0

Perché si aggiunge il 'ImageView' alla posizione 0? – Luksprog

risposta

0

è necessario risolvere il problema in questo codice

public class MainAdapter extends BaseAdapter { 
     public Activity activity; 
     ArrayList<String> data = new ArrayList<String>(); 

     public MainAdapter(Activity a, ArrayList<String> d) { 
      activity = a; 
      data = d; 

     }  

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View cellView = convertView; 
      if (cellView == null) 
       { 
        cellView = new View(activity); 
        Log.d(TAG, "cellView null"); 
       } else 
       { 
        Log.d(TAG, "cellView not null"); 
        cellView = (View) convertView; 
       } 
       LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       cellView = inflater.inflate(R.layout.textviewinfo, null); 

       textView = (TextView) cellView.findViewById(R.id.textView1); 

       /*LinearLayout layout = (LinearLayout)cellView.findViewById(R.id.l1); 
       layout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 100));*/ 

       LinearLayout.LayoutParams parms2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
       parms2.gravity=Gravity.CENTER_HORIZONTAL; 
       //parms2.gravity=Gravity.CENTER_VERTICAL; 
       textView.setLayoutParams(parms2); 
       textView.setText(data.get(position)); 
       textView.setGravity(Gravity.CENTER_VERTICAL); 
       textView.setTextColor(Color.YELLOW); 
       return cellView; 
     } 
     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return data.size(); 
      //return 0; 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return position; 
      //return 0; 
     } 

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

Grazie.solve il mio problema –

+0

Mi chiedo come è questa una soluzione? La domanda è su PagerAdapter e la risposta è su BaseAdapter: S – Shahzeb

Problemi correlati