2013-08-09 3 views
0

현재 나는 커서를 사용하여 각 슬쩍을위한 새로운 플래시 카드를 기본적으로주는 안드로이드 애플 리케이션에 사용자 정의 PagerAdapter 클래스가 있습니다. 처음에는 기본적으로 지시 사항을 제공하는 사용자 정의 XML을 제공합니다 (이전에 왼쪽으로 스 와이프 한 후, 다음으로 오른쪽으로 스 와이프). 오른쪽으로 스 와이프 한 후 플래시 카드 위로 이동하여 사람이 스 와이프 할 때까지 반복합니다. 내가하고 싶은 일은 다음 두 가지입니다 :안드로이드 PagerAdapter 끝 새로운 시각

1) 커서가 마지막 위치에 도달하고 사용자가 마지막 카드를 본 후 ViewPager 끝에서 사용자 정의 XML보기를 추가하고 싶습니다. 처음에는 그랬다.

2) ViewPager를이보기에서 멈추게하고 오른쪽으로 스 와이프하여 아무 것도하지 않도록하고 싶습니다.

순간에 1)은 매우 중요하며 끝까지 나를 좌절하게했습니다. 2) 나는 살 수 있지만 미래의 참고 문헌을 알기에 편리 할 것이다. 내가 아래 코드를 작성했다면 안드로이드/ViewPager/PagerAdapter 전문가가 도와 줄 수 있기를 바랍니다. 당신의 도움을 주셔서 감사합니다!

@Override 
    public Object instantiateItem(View view, int position) { 
     LinearLayout layout = null; 
     int position2 = position; 
     if(position == 0){ 
      layout = (LinearLayout) inflater.inflate(R.layout.activity_slide_info, null); 
     }else{ 
      position2--; 
      cursor.moveToPosition(position2); 
      layout = (LinearLayout) inflater.inflate(R.layout.activity_card, null); 

      TextView cardTitle = (TextView) layout.findViewById(R.id.pirate_card_title); 
      TextView cardExample = (TextView) layout.findViewById(R.id.pirate_card_example); 
      TextView cardDefinition = (TextView) layout.findViewById(R.id.pirate_card_definition); 

      cardTitle.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_TITLE))); 
      cardExample.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_SENTENCE))); 
      cardDefinition.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_DEFINITION))); 
     } 
     ((ViewPager) view).addView(layout); 
     return layout; 
} 

답변

0

ViewPager는 때때로 약간 까다 롭습니다.

두 번째 문제를 해결하는 방법은 더 간단합니다. getCount()를 구현하고 있습니까? 그건 두 번째 문제를 해결해야합니다 - 길이를 당신이 가지고있는 카드의 총 수로 설정하십시오 (당연히 하나 빼기). 그게 카드의 총 개수를지나 가지 않을 것입니다 - 당신이 그것을 비워두면 마지막 카드에 갈 때 충돌합니다 (다음 카드를 읽으려고하지만 아무 것도 찾지 못합니다).

첫 번째 문제는 좀 더 복잡합니다. 마지막 위치에 도달하면 어떻게 실행 코드를 작성합니까? 이를 수행하는 가장 좋은 방법은 ViewPager가 구현되는 모든 곳에서 onPageChangeListener를 구현하는 것입니다 (onCreate() 가능성이 있음). 다음 예는 다음과 같습니다

mPageChangeListener = new OnPageChangeListener() { 
@Override 
public void onPageScrollStateChanged(int arg0) { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onPageScrolled(int arg0, float arg1, int arg2) { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onPageSelected(int pos) { 
    if (pos == lastPage) { 
     //display your XML or do anything else you want to do when done here 
     } 
    } 

}; 
yourViewPager.setOnPageChangeListener(mPageChangeListener); 

는 희망이 다른 문제를 해결!

+0

안녕하세요, 최근 답변에 죄송합니다. 나는이 일을 조금만 할 것이다. 빠른 답변 감사합니다! – user2525981

+0

그냥 모든 것이 부 풀린 것을 알리고 싶었습니다. – user2525981

관련 문제