나는 각 범주와 관련된 질문 범주와 질문을 표시해야하는 응용 프로그램을 만들고 있습니다. 각 질문 카테고리는 서로 다른 수의 질문을 가지고 있습니다. 범주를 선택하면 질문 화면을 슬라이딩 화면으로 표시해야하므로 슬라이딩 할 때 다음 질문으로 이동할 수 있습니다. 그래서 나는 두 개의 화면으로 Fragment
을 선정했습니다. 첫 번째 조각은 범주 목록을 표시하는 ListFragment
이고 다른 하나는 슬라이딩 질문을 표시하는 ViewPager
입니다. 나는 첫번째 카테고리 (3 개의 ques 포함)에 대해 ViewPager
에 Question Fragments를 채울 수 있었지만, List에서 다른 카테고리 (5 개의 ques 포함)를 선택하면 이전 3 개를 바꿀 수 없었습니다. Fragment
. 마지막으로 두 개의 질문을 ViewPager
에 추가했습니다. 새로운 데이터 세트로 ViewPager
을 다시 채워 넣고 싶습니다. 아래 코드를 추가했습니다.ViewPager에서 각 조각을 다시 채우는 방법은 무엇입니까?
QuestionFragmentActivity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.questions_activity);
if (findViewById(R.id.question_section_fragment_container) != null) {
/*
* if (getIntent().getExtras() != null) { return; }
*/
QuestionSection firstFragment = new QuestionSection();
firstFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager()
.beginTransaction()
.add(R.id.question_section_fragment_container,
firstFragment).commit();
}
categoryPosition = 0;//static variable to hold the position of category item selected.
CategoryVO cvo = QuestionFragmentActivity.categoryList
.get(categoryPosition);
if (findViewById(R.id.question_fragment_container) != null) {
/*
* if (getIntent().getExtras() != null) { return; }
*/
QuestionContainer firstFragment = new QuestionContainer();
firstFragment.setCvo(cvo);
firstFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager()
.beginTransaction()
.add(R.id.question_fragment_container,
firstFragment).commit();
}
}
QuestionContainer.java
public class QuestionContainer extends Fragment {
ViewPager mPager;
CategoryVO cvo;
public CategoryVO getCvo() {
return cvo;
}
public void setCvo(CategoryVO cvo) {
this.cvo = cvo;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.question_container, container,
false);
ArrayList<QuestionFragment> fragmentList=new ArrayList<QuestionFragment>();
for(QuestionVO qvo: cvo.getQuestionList()){
fragmentList.add(new QuestionFragment(qvo));
}
mPager = (ViewPager) view.findViewById(R.id.question_viewpager);
MyAdapter mAdapter = new MyAdapter(getActivity().getSupportFragmentManager());
mAdapter.setFragmentList(fragmentList);
mPager.setAdapter(mAdapter);
return view;
}
public static class MyAdapter extends FragmentPagerAdapter {
ArrayList<QuestionFragment> fragmentList;
public ArrayList<QuestionFragment> getFragmentList() {
return fragmentList;
}
public void setFragmentList(ArrayList<QuestionFragment> fragmentList) {
this.fragmentList = fragmentList;
}
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
}
QuestionSection
public class QuestionSection extends ListFragment implements OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.list_fragment1, container, false);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button hideListSection = (Button) getActivity().findViewById(
R.id.btn_hide_section);
hideListSection.setOnClickListener(this);
ListView lv = getListView();
ArrayList<String> listItem = new ArrayList<String>();
for (CategoryVO cvo : QuestionFragmentActivity.categoryList) {
listItem.add(cvo.getCategoryName());
}
lv.setAdapter(new SectionListAdapter(getActivity(), listItem));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos,
long arg3) {
if (pos == 1) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
QuestionFragmentActivity.categoryPosition=pos; CategoryVO cvo=
QuestionFragmentActivity.categoryList.get(pos);
QuestionContainer fragment = new QuestionContainer();
fragment.setCvo(cvo);
fragmentTransaction.replace(R.id.question_fragment_container
, fragment); fragmentTransaction.commit();
}
}
});
}
}
조각을 다시 만들고 다시 'ViewPager.setAdapter (pager_adapter)'를 호출 할 클릭 목록의 조각을 바꿀 것입니다. – Nishant
'ViewPager'에 대한 어댑터를 재설정 한 후에 작동하지 않았습니다. – Nishant