-1

android 및 최근에 스킬이 적용된 스 와이프보기가 새로 도입되었습니다. 내 응용 프로그램에는 17 개의 장이 있고 각 장에는 30 개의 페이지에 텍스트 데이터가 들어있어 사용자가 스 와이프 할 수 있습니다. 메모리를 절약하기 위해 FragmentStatePagerAdapter를 사용해야하지만 510 조각 객체를 만들 필요가 있다는 것을 알아야합니다. 즉, 510 XML 레이아웃을 의미합니까? 난 그냥 각 페이지에서 텍스트를 변경해야하고, 난 내가 각 장 30 건 작성해야/마이효율적인 스 와이프보기를위한 안내가 필요합니다.

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      return new FragmentOne(); 
     case 1: 
      return new FragmentTwo(); 
     default: 
      break; 
    } 
    return null; 
} 

같은 switch 문을 사용하여 많은 봤어요? 또는 이것을 할 수있는 더 좋은 방법이 있습니까? 인터넷 검색을하고 YouTube 동영상을 많이 보았지만 해결책을 찾지 못했습니다. 나는 당신이 응답하거나 논평하는 경우에, 사본 붙이기에서 아닙니다 배우기를 믿기 때문에, 당신의 부호를 설명하는 모두를 요구한다.

+1

사용자 정의 호출기 어댑터

class MyFragmentAdapter extends FragmentStatePagerAdapter { MyFragmentAdapter(FragmentManager fm) {super(fm);} @Override public Fragment getItem(int position) { Bundle args = new Bundle(); args.putInt("position", position); Fragment fragment = new FragmentChild(); fragment.setArguments(args); return fragment; } @Override public int getCount() { return 3; } } 

그리고 마지막으로 호스트 활동, 내부를 제공

public class FragmentChild extends Fragment { @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { // INFLATE THE LAYOUT THAT EACH FRAGMENT OBJECT WILL HAVE, PUT IT IN A VIEW View root = inflater.inflate(R.layout.couplets, container, false); // RECEIVE THE BUNDLE DATA SENT (ARGUMENTS) Bundle args = getArguments(); // CREATE AN ARRAY LIST OF STRINGS THAT WILL HOLD TEXT ArrayList<String> someText = new ArrayList<>(); someText.add("one"); someText.add("two"); someText.add("three"); TextView txt = (TextView) root.findViewById(R.id.text_view); txt.setText(someText.get(args.getInt("position"))); return root; } 

코드를입니다 콘텐츠는 일반 –

+1

입니다. 150 레이아웃을 동적으로 레이아웃을 추가 할 필요가 없습니다. –

+0

'나는 학습을 믿는다'** 우리는 ** 자습서를 검색하기 위해 Google을 사용한다고 믿습니다 **. 이것은 엄격한 의미에서 학습 장소가 아닙니다. –

답변

-1

그것은 쉬워요 남자입니다! 당신은 하나 개의 조각 객체를 필요

, 여기 당신이 레이아웃을 재사용 할 수

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_chapter_one); 

    // FIND THE VIEWPAGER AND SET THE CUSTOM ADAPTER TO IT TO PROVIDE CHILD PAGES 
     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(adapter); 
    } 
} 
+0

그리고 Rotwang과 같은 사람들은 상관하지 않습니다. –

0

FragmentStatePagerAdapter을 사용하면 여기에 올바르게 접근 할 수 있습니다. 설정 한 viepager offscreenLimit()을 기반으로 프래그먼트 상태를 관리합니다.

귀하의 경우에는 단 하나의 단편과 텍스트의 arrayList를 가질 수 있으며 위치에 따라 다른 텍스트가 제공됩니다. 이 같은

뭔가 ..

List<String> yourList = new ArrayList<>(); 

@Override 
public Fragment getItem(int position) { 
    return new YourFragment(yourList.get(position)); 
} 
+0

@Ritesh 여러 언어를 지원하기 위해 텍스트 데이터를 번역해야하는 경우 어떻게해야합니까? 문자열을 참조하는 정수 ArrayList를 작성해야합니까? –

+0

예, 둘 이상의 언어를 지원하려면 목록에서 문자열을 참조해야합니다. – Ritesh

+0

FragmentStatePagerAdapter에서 문자열 데이터 형식의 ArrayList를 만들려고했지만 거기에서 만들 수는 없었습니다. 메서드 내에서 만들고 두 번째 방법이 필요합니다. "yourlist.get (position) "yourFragment 안에? –