Tôi không thể cập nhật nội dung trong ViewPager.
Cách sử dụng chính xác của các phương thức InstantiateItem () và getItem () trong lớp FragmentPagerAd CHƯƠNG là gì?
Tôi đã chỉ sử dụng getItem () để khởi tạo và trả lại các đoạn của mình:
@Override
public Fragment getItem(int position) {
return new MyFragment(context, paramters);
}
Điều này làm việc tốt. Ngoại trừ tôi không thể thay đổi nội dung.
Vì vậy, tôi đã tìm thấy điều này: ViewPager PagerAdOG không cập nhật View
"Cách tiếp cận của tôi là sử dụng phương thức setTag () cho bất kỳ chế độ xem tức thời nào trong phương thức InstantiateItem ()"
Bây giờ tôi muốn triển khai InstantiateItem () để làm điều đó. Nhưng tôi không biết mình phải trả lại cái gì (loại là Object) và mối quan hệ với getItem (vị trí int) là gì?
Tôi đọc tài liệu tham khảo :
công cộng trừu tượng Fragment getItem (vị trí int)
Trả lại các mảnh được liên kết với một vị trí được chỉ định.
đối tượng công khai tức thìItem (thùng chứa Viewgroup, vị trí int)
Tạo trang cho vị trí nhất định. Bộ điều hợp có trách nhiệm thêm chế độ xem vào vùng chứa được cung cấp ở đây, mặc dù nó chỉ phải đảm bảo việc này được thực hiện vào thời điểm nó trả về từ finishUpdate (Viewgroup). Thông số
thùng chứa Chế độ xem chứa trong đó trang sẽ được hiển thị. vị trí Vị trí trang sẽ được khởi tạo.
Trả về
Trả về một đối tượng đại diện cho trang mới. Đây không cần phải là Chế độ xem, nhưng có thể là một số vùng chứa khác của trang.
nhưng tôi vẫn không hiểu
Đây là mã của tôi. Tôi đang sử dụng gói hỗ trợ v4.
ViewPagerTest
public class ViewPagerTest extends FragmentActivity {
private ViewPager pager;
private MyFragmentAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pager1);
pager = (ViewPager)findViewById(R.id.slider);
String[] data = {"page1", "page2", "page3", "page4", "page5", "page6"};
adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data);
pager.setAdapter(adapter);
((Button)findViewById(R.id.button)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
reload();
}
});
}
private void reload() {
String[] data = {"changed1", "changed2", "changed3", "changed4", "changed5", "changed6"};
//adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data);
adapter.setData(data);
adapter.notifyDataSetChanged();
pager.invalidate();
//pager.setCurrentItem(0);
}
}
MyFragmentAd CHƯƠNG
class MyFragmentAdapter extends FragmentPagerAdapter {
private int slideCount;
private Context context;
private String[] data;
public MyFragmentAdapter(FragmentManager fm, int slideCount, Context context, String[] data) {
super(fm);
this.slideCount = slideCount;
this.context = context;
this.data = data;
}
@Override
public Fragment getItem(int position) {
return new MyFragment(data[position], context);
}
@Override
public int getCount() {
return slideCount;
}
public void setData(String[] data) {
this.data = data;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
MyFragment
public final class MyFragment extends Fragment {
private String text;
public MyFragment(String text, Context context) {
this.text = text;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.slide, null);
((TextView)view.findViewById(R.id.text)).setText(text);
return view;
}
}
Đây cũng là một người có vấn đề tương tự, không có câu trả lời http://www.mail-archive.com/android-developers@googlegroups.com/msg200477.html