2013-02-16 6 views
6

Mon logcat en impression première fois prendre la position 0 après avoir répété cette méthode et prendre la position 1, je n'ai pas besoin de repeter cette méthode.Comment pas de répétition de l'objet instantiateItem() dans PagerAdapter dans 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; 

} 

Ce code diapositive d'image fonctionne avec succès, mais glisser l'image première et la dernière impression erronée de la position dans logcat.please me aider. merci.

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(); 
} 

} 

Ce code en position d'impression incorrect dans logcat quand je glisser vers la droite de l'image et side.i gauche ont besoin slide image côté droit lorsque incrément de position et de l'image de diapositive côté gauche décrément position.please me aider . Merci.

+0

Pourquoi vous ajoutez le 'ImageView' à la position 0? – Luksprog

Répondre

0

vous devez résoudre le problème dans ce code

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

Merci you.solve mon problème –

+0

Je me demande comment est-ce une solution? La question concerne PagerAdapter et la réponse concerne BaseAdapter: S – Shahzeb

Questions connexes