2

다른 카테고리의 제품을 표시하기 위해 안드로이드 마켓과 같은 작업을하려고합니다. 나는 그 동작을 this 라이브러리로 구현했으며, 모두 잘 돌아갑니다.뷰 페이지의 다른 레이아웃

내가 지금하고 싶은 것은 범주 페이지에서 목록보기를 사용하고 다른 하나는 격자보기를 사용하는 것입니다. 물론 각각의 데이터 소스는 서로 다른 데이터 소스를 갖습니다.

어떻게하면됩니까? 그것은 어댑터와 관련이 있습니까?

답변

1

FragmentPagerAdapter을 재정의하고 getItem을 덮어 쓰고 ViewPager의 색인/위치에 따라 적절한 조각 객체 (또는 ListFragment)를 반환하고 싶다고 생각합니다. 당신이 ViewPager (<android.support.v4.view.ViewPager>)를 포함한다 액티비티의 레이아웃 XML의

하고 활동 onCreate에 당신의 FragmentPagerAdapter을 할당 할 ViewPagersetAdapter 방법을 사용합니다.

+0

감사합니다. 그리고 적절한 조각을 반환하면 새 것을 만들거나 다음과 같이해야합니다. return MyFragment.newInstance (position); – olistic

+0

둘 중 하나가 작동합니다. 두 파편이 얼마나 다른가에 달려 있습니다. 파서를 두 개의 다른 클래스로 나누는 것이 합리적 일 수 있습니다. 또는 생성자에 전달한 내용을 기반으로 변경되는 단일 조각을 갖는 것이 좋습니다. 개인적으로 두 개의 서로 다른 Fragment 클래스를 사용합니다. –

+0

대단히 고마워요. – olistic

0

안녕하세요 난 당신이 찾을 수 있습니다 나는 하나의 아주 좋은 예를 찾을 수있다 내 튜토리얼에서보기 호출기의 조각을 사용 또한 here

9

에서 코드를 다운로드 할 수있는이 link

에 모습을 가지고하는 방법을 설명해야 이 사이트

https://github.com/astuetz/ViewPagerExtensions

에 그렇지이 코드가 도움이되기를 바랍니다있다.

@Override 
public Object instantiateItem(View collection, int position) { 
    View v = new View(PatientView.this.getApplicationContext()); 
    final LayoutInflater inflater = (LayoutInflater) PatientView.this 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    switch (position) { 
    case 0: 
     v = inflater.inflate(R.layout.patientp1, 
       (ViewGroup) null, false); 
     ((Button) v.findViewById(R.id.pp1btnbck)).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       finish(); 
      } 
     }); 

     break; 
    case 1: 
     v = inflater.inflate(R.layout.patientp2, null, false 
       ); 
     break; 
    default: 

     TextView tv = new TextView(PatientView.this.context); 
     tv.setText("Page " + position); 
     tv.setTextColor(Color.WHITE); 
     tv.setTextSize(30); 
     v = tv; 
     break; 
    } 
    ((ViewPager) collection).addView(v, 0); 

    return v; 
} 
+0

buddy 나는 이걸 시도하고 있는데 여기에 "type mismatch : View에서 int로 변환 할 수 없습니다"라는 메시지가 나타납니다. v = inflater.inflate (R.layout.patientp1, (ViewGroup) null, false); –

+1

덕분에이 친구가 도와줍니다 ... –

+0

cool bro .. .. thanks –