2013-03-20 81 views
3

使用ViewPager以左/右滑动切换视图。专注于ViewPager的视图无法正常工作

我有一个pagerview里面有各种不同的视图(自定义列表视图,图像视图等),当页面浏览滑动时,应该根据索引更改子值的滚动。我的问题是,当我运行我的项目时,数值显示第一个索引而不是第0个索引,滑动索引后也不合适。幻灯片大小将取决于sqllite数据库中的值。

电话pagerview

pager = (ViewPager) findViewById(R.id.panelPager); 
     adapter = new MyPagerAdapter();  
     pager.setAdapter(adapter); 
     pager.setCurrentItem(0); 

这是我的传呼机适配器类

public class MyPagerAdapter extends PagerAdapter { 

     @SuppressWarnings("deprecation") 
     @Override 
     public Object instantiateItem(View collection,int position) { 
      Log.d("Pos",""+position); 
      PagerView = new View(collection.getContext()); 

      LayoutInflater inflater = (LayoutInflater) collection.getContext() 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      PagerView = inflater.inflate(R.layout.newmainviewpager, null, false); 
      lvMenu=(ListView)PagerView.findViewById(R.id.lvMenuItem); 
      imgMainItem=(ImageView)PagerView.findViewById(R.id.imgDisplay); 
      edQty=(TextView)PagerView.findViewById(R.id.edQty1); 
      edQty.setText("1"); 
      btnAdd=(Button)PagerView.findViewById(R.id.btnAdd); 
      btnSub=(Button)PagerView.findViewById(R.id.btnsub); 
      tvDesc=(TextView)PagerView.findViewById(R.id.tvDesc); 
      btnPurchaseOrder=(Button)PagerView.findViewById(R.id.btnPlaceOrder); 
      btnPurchaseOrder.setOnClickListener(RevisedMainMenu.this); 
      imgfbConnect=(Button)PagerView.findViewById(R.id.imgfbConnect); 
      imgfbConnect.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        FetchImagePath fetchimage = new FetchImagePath(RevisedMainMenu.this); 
        fetchimage.execute("http://192.168.1.6/dat/imagepath.php"); 
       } 
      }); 
      displayMenu(position); 
      btnAdd.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        int qty=Integer.parseInt(edQty.getText().toString().trim()); 
        qty=qty+1; 
        edQty.setText(String.valueOf(qty)); 
       } 
      }); 
      btnSub.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        int qty=Integer.parseInt(edQty.getText().toString().trim()); 
        if(qty>1) 
        { 
         qty=qty-1; 
         edQty.setText(String.valueOf(qty)); 
        } 
        else 
         Toast.makeText(getApplicationContext(), "Invalid Operation",Toast.LENGTH_LONG).show(); 
       } 
      }); 
      lvMenu.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, 
         long id) { 
        SubMenuid12=ExtraSubMenuIdlst.get(position); 
        byte[] photo =datasource.getImagePathFromSubMenuId(ExtraSubMenuIdlst.get(position)); 
        ByteArrayInputStream imageStream = new ByteArrayInputStream(photo); 
        Bitmap theImage= BitmapFactory.decodeStream(imageStream); 
        Bitmap bitmapScaled = Bitmap.createScaledBitmap(theImage, 300,250, true); 
        Drawable drawable = new BitmapDrawable(bitmapScaled); 
        imgMainItem.setBackgroundDrawable(drawable);  
        String Desc=datasource.getSubMenuDescriptionFromSubMenuId(SubMenuid12); 
        tvDesc.setText(Desc); 
        selectionPos=position; 
        Log.d("SelPos",""+selectionPos); //.d("das","dasdas"); 
//     
       } 
      }); 
//   } 
//   Log.d("MenuID",MenuIdlst.get(position)); 

      ((ViewPager) collection).addView(PagerView, 0); 
      return PagerView; 

     } 
     @Override 
     public void destroyItem(final View arg0, final int arg1, 
       final Object arg2) { 
      ((ViewPager) arg0).removeView((View) arg2); 

     } 

     @Override 
     public boolean isViewFromObject(final View arg0, final Object arg1) { 
      return arg0 == ((View) arg1); 

     } 

     @Override 
     public void finishUpdate(View arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void restoreState(Parcelable arg0, ClassLoader arg1) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public Parcelable saveState() { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public void startUpdate(View arg0) { 
      // TODO Auto-generated method stub 

     } 
     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return MenuIdlst.size(); 
     } 

    } 

这是指数,显示一1, enter image description here

这是指数零的位置,这应该将显示第1个 enter image description here

+0

没有人有关于这个概念的知识? – hemant 2013-03-28 05:37:34

回答

1

您可以编写网页变化监听器类,像这样:

pager.setOnPageChangeListener(new OnPageChangeListener() { 

    @Override 
    public void onPageSelected(int pageNum) { 
     // TODO Auto-generated method stub 
     Log.d("index", "onpagechange: " + pageNum); 
    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 

    } 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 
     // TODO Auto-generated method stub 

    } 
}); 
+0

我应该在哪里定义我的视图里面viewPager – hemant 2013-03-25 09:51:20

+1

你已经使用“instantiateItem()”方法在适配器中创建了一个视图,这里setOnPageChangeListener()只给出页面更改的结果,并且您可以编辑pageSelected ) – 2013-03-25 10:01:59

+0

方法setOnPageChangeListener(new ViewPager.OnPageChangeListener(){})未定义类型视图 – hemant 2013-03-25 10:42:21

1

使用

setPrimaryItem(View container, int position, Object object) 

在适配器(覆盖它)

用于这一目的。