2013-02-16 7 views
6

में पेजर एडाप्टर में ऑब्जेक्ट इंस्टेंटिएट इटिम() का पुनरावृत्ति कैसे करें इस विधि को दोहराने के बाद पहली बार प्रिंट में मेरा लॉगकैट 0 ले लेता है और स्थिति 1 लेता है, मुझे इस विधि को दोबारा नहीं करना चाहिए।एंड्रॉइड

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 में पहली छवि की स्लाइड और स्थिति के अंतिम गलत प्रिंट मेरी मदद। धन्यवाद।

संपादित करें:

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

} 

logcat में गलत प्रिंट स्थिति जब मैं स्लाइड छवि दाएं और बाएं तरफ दाईं ओर स्लाइड छवि की जरूरत है जब स्थिति वेतन वृद्धि और बाईं ओर स्लाइड छवि घटती 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

मुझे आश्चर्य है कि यह एक समाधान कैसे है? प्रश्न पेजर एडाप्टर के बारे में है और उत्तर बेसएडाप्टर के बारे में है: एस – Shahzeb