2013-02-16 25 views
6

このメソッドを繰り返してポジション1を取った後、私のlogcat in printは初めてポジション0を取る、私はこのメソッドを繰り返す必要はない。androidのPagerAdapterでオブジェクトinstantiateItem()を繰り返さない方法

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; 

} 

画像スライドのこのコードは正常に動作しますが、画像のスライドは最初と最後の間違った位置のlogcat.pleaseの印刷に役立ちます。ありがとうございます。

編集:logcatで間違った印刷位置にある

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

} 

このコードで、私は画像の左右side.iをスライド位置の増分と左側のスライド画像デクリメントposition.pleaseが私を助けたときに右側のスライド画像を必要とします。 ありがとうございます。

+0

は、なぜあなたは位置0で 'ImageView'を追加します。このコードで問題を解決する必要がありますか? – Luksprog

答えて

0

あなたは

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

ありがとうございます。私の問題 –

+0

を解決してくださいこれはどのように解決されますか?質問はPagerAdapterに関するもので、答えはBaseAdapter:Sです – Shahzeb

関連する問題