簡體   English   中英

notifyDataSetChanged()對我不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM