notifyDataSetChanged() 对我不起作用



我正在尝试提升ListView。tab_3,我不会点击项目,在选项卡 2 中,我想通过该项目获取查询。但是当我从选项卡 3 滑动到选项卡 2 时,选项卡 2 中的列表视图没有更新。我理解之前创建的选项卡 2 的视图,但是如何使用选项卡 2 中的 listvew 在选项卡 3 中更新列表视图?

我的来源:

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 {
    }
  }

最新更新