6

我的 logcat 在打印中第一次在重复此方法并占据位置 1 后占据位置 0,我不需要重复此方法。

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 中位置打印错误。请帮助我。谢谢。

编辑:

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 中的错误打印位置。当位置增加和左侧滑动图像减少位置时,我需要右侧滑动图像。请帮助我。谢谢。

4

1 回答 1

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;
        }
    }
于 2013-04-24T13:12:30.720 回答