1

我有一個TabView的和viewPager
我使用(只有一個),本地數據庫獲取數據
當我做出改變我的數據庫,至少我應該去2個選項卡下一個(或後)改變發生在我viewPager片段(我有4個選項卡)
,我曾嘗試過很多方法,如POSITION_NONE和INVALIDATE()和... ,但沒有改變!
任何人都可以幫助我如何刷新我的片段(在當前頁面和其他頁面)?ViewPager不會刷新片段

public class FragmentList extends Fragment { 
    public static RecyclerView TaskRecyclerView; 
    private View view; 
    private AdapterTask adapterTask; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     view=inflater.inflate(R.layout.fragment_tasks,container,false); 
     TaskRecyclerView =(RecyclerView)view.findViewById(R.id.task_recycler); 
     DatabaseOpenHelper databaseOpenHelper=new DatabaseOpenHelper(getContext()); 
     adapterTask =new AdapterTask(getActivity(),databaseOpenHelper.getTasks()); 
     TaskRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false)); 
     TaskRecyclerView.setAdapter(adapterTask); 
     return view; 
    } 

    public static FragmentList newInstance() { 

     Bundle args = new Bundle(); 

     FragmentList fragment = new FragmentList(); 
     fragment.setArguments(args); 
     return fragment; 
    } 
} 

,因爲我沒有告訴任何改變發生(甚至在頁面中選擇())之前,我改變至少2個選項卡...我的意思是,例如當我在我的選項卡一號,我去標籤沒有。 2,然後是3號,所以3號刷新到新數據,當我回到1號標籤頁時,它也刷新了
,但2號表格仍舊有舊數據!
我應該去4號標籤,回來看看2號標籤的變化。

重要更新
我想通了,我的問題是offScreenPageLimit(),它不會達到0。
我怎麼能把它放到0?

回答

0

您是否嘗試過.notifyDataChanged();在你的適配器上?

+0

是的,我想它在許多方面... –

1

在onPageSelected上使用通知方法刷新數據。 您的代碼將是

adapterTask.notify();

+0

我的onResume試過你的建議()在我的片段,卻得到了一個錯誤(強制關閉!),說其不被線程鎖定...我沒有有問題? –

+0

您必須在onPageSelected上刷新適配器。 使用notificationDataChanged的通知 –

+0

我也是這樣做的......甚至改爲FragmentStatePagerAdapter或嘗試分離並附加...但仍然是... –

0

嘗試重寫此方法。這個方法會告訴你片斷可見與否。

 @Override 
     public void setUserVisibleHint(boolean isVisibleToUser) { 
      super.setUserVisibleHint(isVisibleToUser); 
      if (isVisibleToUser) { 
// visible 
      } 
      else { 
      } 
     }