我有持有三種不同的片段,列表視圖每個片段三個選項卡,它看起來像這樣:刷新ViewPager片段不能正常工作
當我按下白色按鈕列表項添加到tab2,如果我按下紫色按鈕列表項目被添加到tab3。 Tab3被刷新,因爲viewPager具有默認的屏幕外限制1,所以當我導航到tab3時,它被創建並且在那個時候它有新的listitem,但是tab2已經在應用程序啓動時被創建,因此我需要通過某種方法刷新它。所以我創建了tab2片段中的updateView()方法,並且我在OnPageChangeListener()方法上調用了它更新視圖的方法,但每次導航到tab2時都會調用它,並導致滯後。我想要做的就是刪除該列表項目並將其添加到tab2,它被刪除,它被添加到tab2,但是當我刷到tab2我看不到它,只是在關閉應用程序後它出現或當tab2片段調用onResume,onCreate ...
Async方法,其在加載背景列表項:在同一片段
public class AchievedDreamFragment extends Fragment {
ListView achievedListView;
Activity activity;
ArrayList<AchievedCloud> achievedClouds;
AchievedListAdapter achievedListAdapter;
AchievedActionHandler achievedActionHandler;
private GetAvedTask atask;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = getActivity();
achievedActionHandler = new AchievedActionHandler(activity);
}
public class GetAvedTask extends AsyncTask<Void, Void, <AchievedCloud>> {
private final WeakReference<Activity> activityWeakRef;
public GetAvedTask(Activity context) {
this.activityWeakRef = new WeakReference<Activity>(context);
}
@Override
protected ArrayList<AchievedCloud> doInBackground(Void... arg0) {
Log.e(TAG,"do in background");
//achievedActionHandler = new AchievedActionHandler(activity);
ArrayList<AchievedCloud> dreamList = achievedActionHandler.getaDreams();
return dreamList;
}
@Override
protected void onPostExecute(ArrayList<AchievedCloud> adrmList) {
Log.e(TAG,"on Post execute");
if (activityWeakRef.get() != null
&& !activityWeakRef.get().isFinishing()) {
achievedClouds = adrmList;
if (adrmList != null) {
if (adrmList.size() != 0) {
achievedListAdapter = new AchievedListAdapter(activity,
adrmList);
achievedListView.setAdapter(achievedListAdapter);
achievedListAdapter.notifyDataSetChanged();
}
}
}
}
}
的UpdateView()的方法,其中的AsyncTask是:
public void updateView() {
atask = new GetAvedTask(activity);
atask.execute((Void) null);
}
viewpager OnPageChangeListener():
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position == 1){
achievedDreamFragment.updateView();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
我嘗試以及對適配器getItemPosition POSITION_NONE,但它並沒有解決這個問題的任何想法,我有什麼可以嘗試?
當我按下白色按鈕後輕掃到TAB2我希望看到該項目有 – kosas
傢伙這段時間我一直在尋找這樣的事情謝謝你! – kosas