How to not repeat instantiateItem object of object () in PagerAdapter in android

My log code for the first time takes position 0 after repeating this method and takes position 1, I do not need to repeat this method.

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

This code in the image slide works successfully, but the image slide is the first and last invalid position fingerprint in logcat.please to help me. thanks.

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

This code is in the wrong print position in logcat when I slide the image left and right. I need an image on the right side of the slide when changing the position step by step and decreasing the position of the slide image on the left side. Help me. Thanks.

+6
source share
1 answer

you need to solve the problem in this 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
source

All Articles