[英]notifyDataSetChanged() doesnt work for me
我正在嘗試更新ListView。 在tab_3中,我不希望點擊該項目,而在選項卡2中,我想通過該項目進行查詢。 但是,當我從選項卡3滑動到選項卡2時,選項卡2中的ListView不會更新。 我知道選項卡2的視圖是之前創建的,但是如何在選項卡3中點擊listvew來更新選項卡2的列表視圖?
我的來源:
public void onViewCreated(View view, Bundle savedInstanceState) {
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mViewPager.setAdapter(new SamplePagerAdapter());
mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mViewPager);
}
class SamplePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View view, Object o) {
return o == view;
}
public Object instantiateItem(ViewGroup container, int position) {
switch (position) {
case 0:
View view0 = getActivity().getLayoutInflater().inflate(R.layout.tab_1, container, false);
Log.d(TAG, "Tab case 0");
container.addView(view0);
return view0;
case 1:
View view1 = getActivity().getLayoutInflater().inflate(R.layout.tab_2, container, false);
Log.d(TAG, "Tab case 1 ");
ListView lvLibList = (ListView)view1.findViewById(R.id.lvLibList);
Database database = new Database(getActivity());
if (NAME != null) {
mNames = database.getListByName(NAME);
} else {
mNames = database.getListByName(" ");
}
NameListAdapter namelistAdapter = new NameListAdapter(mMedias);
lvNameList.setAdapter(namelistAdapter);
namelistAdapter.notifyDataSetChanged();
container.addView(view1);
return view1;
default:
View view2 = getActivity().getLayoutInflater().inflate(R.layout.tab_3, container, false);
Log.d(TAG, "Tab 3 ");
ListView lvSourceList = (ListView)view2.findViewById(R.id.lvSourceList);
Database mb = new Database(getActivity());
mFull = mb.getFull();
FullAdapter fullAdapter = new FullAdapter(mFull);
lvFullList.setAdapter(fullAdapter);
lvFullList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view1,
int position, long id) {
Full f = (Full)parent.getAdapter().getItem(position);
NAME = f.getName();
Log.d(TAG, NAME);
}
});
container.addView(view2);
return view2;
}
}
您應該在setUserVisibleHint
方法中編寫它。 像這樣覆蓋它。 適當地重新加載適配器,然后調用notifyDataSetChanged
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
}
else {
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.