2014-09-22 4 views
0

나는 안드로이드 애플 리케이션을 코딩하고 약간의 문제에 직면 해있다. 호출기 어댑터 확장 클래스 (아래 코드 참조)를 사용하고 응용 프로그램의 작동 방식을 보여주는 배경 화면을 만드는 방법을 배우려고 시도했습니다. 지금은 화면을 통해 손가락을 스 와이프하여 페이지간에 이동할 수 있습니다. 터치하여 화면을 변경하고 싶습니다. 그게 가능하니? 그렇다면 어떻게 할 수 있습니까? 나는 그것을 onClick 메서드를 사용하는 것이 좋습니다.안드로이드 호출기 어댑터, 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); 
     } 
    }); 

이것은 사용자가 직접 작업해야하는 기본 사항입니다. 그러나 최종 솔루션에 도달하는 것이 필요 이상입니다.

잘하셨습니다.

관련 문제