2013-03-20 8 views
3

использует ViewPager для переключения видов с помощью прокрутки влево/вправо.Сфокусированный взгляд с ViewPager не работает должным образом

У меня есть pagerview внутри, что есть различные виды (пользовательский просмотр списка, просмотр изображений и т. Д.). Когда pagerview перемещается, дочерние значения должны быть изменены в соответствии с индексом для прокрутки. Моя проблема заключается в том, что когда я запускаю проект, значение отображается с 1-го индекса, а не с 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

Это индекс 0th расположение, которое должно 1 enter image description here

+0

Никто не знает об этом понятии ??? – hemant

ответ

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

+1

, вы уже создали представление в адаптере с использованием метода «instantiateItem()», здесь setOnPageChangeListener() дает только результат изменения страницы, и вы можете редактировать текущую страницу на странице «Выбранный» () –

+0

Метод setOnPageChangeListener (новый ViewPager.OnPageChangeListener() {}) не определен для типа View – hemant

1

использование

setPrimaryItem(View container, int position, Object object) 

в адаптере (переопределить его)

для этой цели.

Смежные вопросы