2014-09-22 2 views
0

Я кодировал приложение для Android и столкнулся с небольшой проблемой. Я попытался реализовать учебник с использованием расширенного класса Pager Adapter (см. Ниже код) и создания некоторых фоновых обоев, которые показывают, как работает приложение. Прямо сейчас вы можете перейти со страницы на страницу, прокручивая палец по экрану. Я хотел бы изменить экран, коснувшись его. Это возможно? если да, то как это можно сделать? я полагаю, это может быть с помощью метода onClick.Android Pager Adapter, onClick

Спасибо заранее и извините за мой английский.

tutorial.java

public class tutorial extends Activity { 

    int currentPage; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     //Remove title bar 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

     //set content view AFTER ABOVE sequence (to avoid crash) 
     this.setContentView(R.layout.tutorial_pannels_pager); 

     MyPagerAdapter adapter = new MyPagerAdapter(); 

     final ViewPager myPager = (ViewPager) findViewById(R.id.tutorial_pannel); 

     myPager.setAdapter(adapter); 

     myPager.setCurrentItem(0); 









    } 


} 

MyPagerAdapter.java

public class MyPagerAdapter extends PagerAdapter { 


    // set number of pages 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 7; 
    } 


    // Set each screen's content 
    @Override 
    public Object instantiateItem(final View container, final int position) { 
     Context context = container.getContext(); 
     LinearLayout layout = new LinearLayout(context); 
     // Add elements 
     TextView textItem = new TextView(context); 



     switch (position) { 
     case 0: 
      layout.setBackgroundResource(R.drawable.tut_0); 

      break; 
     case 1: 
      layout.setBackgroundResource(R.drawable.tut_1); 

      break; 
     case 2: 
      layout.setBackgroundResource(R.drawable.tut_2); 

      break; 

     case 3: 
      layout.setBackgroundResource(R.drawable.tut_3); 

      break; 
     case 4: 
      layout.setBackgroundResource(R.drawable.tut_4); 

      break; 
     case 5: 
      layout.setBackgroundResource(R.drawable.tut_5); 

      break; 
     case 6: 
      layout.setBackgroundResource(R.drawable.tut_6); 
      break; 
    } 
    layout.addView(textItem); 
    ((ViewPager) container).addView(layout, 0); // This is the line I added 
    return layout; 
     } 

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

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

     @Override 
     public Parcelable saveState() { 
      return null; 
     } 

} 

tutorial_pannels_pager.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="bottom" 
    android:orientation="vertical" > 

    <android.support.v4.view.ViewPager 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/tutorial_pannel"/> 

</LinearLayout> 

ответ

1

Сначала вы должны пройти интерфейс к адаптеру. Этот пример должен просветить вас:

public interface OnItemClick{ 
    void onClick(int position); 
    } 

Далее вы должны реализовать этот интерфейс и добавить код для ручного изменения вида. Затем передайте экземпляр этого интерфейса к адаптеру. Как это:

MyPagerAdapter adapter = new MyPagerAdapter(new OnItemClick(){ 
     @Override 
     public void onClick(int position) 
     { 
      myPager.setCurrentItem(position+1); //example.. change it to your needs 
     } 
    }); 

Далее на адаптере вам нужно сохранить экземпляр этого интерфейса, который был передан в конструктор, а затем вызвать его при нажатии на макете, например.

layout.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      interface.onClick(position); 
     } 
    }); 

Это всего лишь основы, так как вам нужно работать над ним самостоятельно. Однако это более чем необходимо для достижения окончательного решения.

Хорошая работа.

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