2012-05-16 38 views
9

tôi có số này PageAdapter với các ngày trong tuần, cho mỗi máy nhắn tin tôi có cùng một Bố cục. Vấn đề của tôi là cách cập nhật listView phù hợp khi thay đổi ngày. Khi tôi thay đổi ngày Pager tạo một máy nhắn tin mới và xóa khác, khi điều này xảy ra điểm listview của tôi để máy nhắn tin mới nhưng không phải là hiện tại. Ví dụ, là wedneyday và tôi lưu tham chiếu listview, khi tôi thay đổi cho thứ ba, thứ hai máy nhắn tin được tạo ra và thứ năm bị xóa, và điểm tham chiếu của tôi để tạo trang cuối (thứ hai) nhưng tôi vào thứ ba.Làm thế nào để cập nhật nội dung ViewPager?

pageAdapter của tôi:

ListView lvwConfig; 

@Override 
public Object instantiateItem(View pager, int position) { 
    LayoutInflater inflater = (LayoutInflater) mContext 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflater.inflate(R.layout.pager_layout, null); 
    lvwConfig = (ListView) v.findViewById(R.id.lvwConfig); 
    ((ViewPager) pager).addView(v, 0); 

    return v; 
} 

Tôi muốn các ListView luôn trỏ đến listview của mục hiện hành.

+0

http://stackoverflow.com/questions/33012056/view-pager-first-and-second-fragment-data-is-not-updating-when-data-changed-in-a –

Trả lời

39

đã đọc bài này: PagerAdapter

Bạn có thể thực hiện chức năng này trong PagerAdapter:

public int getItemPosition(Object object){ 
    return POSITION_NONE; 
} 

sau đó, bạn có thể sử dụng chức năng này:

yourPagerAdapterObject.notifyDataSetChanged(); 

Phương pháp này là xấu nếu bạn có quá nhiều lượt xem để hiển thị. Tất cả các lượt xem luôn được tính toán lại. Nhưng trong trường hợp của bạn, đối với một số quan điểm, đó là okay.

+0

vui lòng xem bài đăng http : //stackoverflow.com/questions/33012056/view-pager-first-and-second-fragment-data-is-not-updating-when-data-changed-in-a –

5

Ghi đè getItemPosition trong PagerAdapter dễ dàng hơn, nhưng không hiệu quả chút. Bằng cách này, khi bạn gọi notifyDataSetChanged(), trình xem trang sẽ xóa tất cả chế độ xem và tải lại tất cả. Như vậy hiệu ứng tải lại được lấy. Có một tùy chọn khác là suggested by alvarolb, là phương pháp setTag() trong instantiateItem() khi khởi tạo chế độ xem mới. Sau đó, thay vì sử dụng notifyDataSetChanged(), bạn có thể sử dụng findViewWithTag() để tìm chế độ xem bạn muốn cập nhật.

Các vấn đề liên quan