ListView в макете с вкладками Android

android listview android-fragments

457 просмотра

1 ответ

322 Репутация автора

Я реализовал TabLayoutв Android с двумя фрагментами. В одном фрагменте я добавил ListView. Я получаю данные с сервера, чтобы заполнить ListView. Все работало нормально, пока я не попытался получить доступ ListViewиз MainActivityкласса.

Мне нужен доступ к тому же списку (который находится во фрагменте) из MainActivity, где я создал TabLayoutдля загрузки данных. Фрагмент создается для вкладки табуляции.

Я добавил код ниже.

Может кто-нибудь сказать мне, как я могу получить доступ к этому ListViewиз MainActivity? MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detailed_report);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);



    final TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.addTab(tabLayout.newTab().setIcon(R.mipmap.ic_launcher));
    tabLayout.addTab(tabLayout.newTab().setIcon(R.mipmap.ic_launcher));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setVisibility(View.INVISIBLE);

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());

        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

ReportListFragment.java

public class ReportListFragment extends Fragment{



private SimpleDateFormat mFormatter = new SimpleDateFormat("MMMM dd yyyy hh:mm aa");
Date newDate;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_item_list, container, false);
    finder_sharedprefs = getActivity().getSharedPreferences(FINDERPREFERENCES, Context.MODE_PRIVATE);

    listView=(ListView) view.findViewById(R.id.list);
    reportLayout = (RelativeLayout) view.findViewById(R.id.new_report);




        } catch (ParseException e) {
            e.printStackTrace();
        }


    }


    return view;
}

}

Автор: anuradha Источник Размещён: 18.07.2016 09:51

Ответы (1)


0 плюса

2842 Репутация автора

Пожалуйста, проверьте этот ответ, если он поможет вам,

В соответствующем коде фрагмента создайте публичную функцию

FragmentA.java создайте функцию, как показано ниже.

    public void getData(int r) {
        Log.e("data got from Activity", "" + r); // this is sample
        //Do your updations to list view here.
      }

Теперь в вашем mainActivity.java вызывайте эту функцию, как показано ниже, где вы хотите

button.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        new FragmentA().getData(34);
      }
    });

Теперь проверьте журнал кот. Вы увидите номер 34 напечатан. Дайте мне знать, если у вас есть какие-либо вопросы.

Автор: Ragu Swaminathan Размещён: 18.07.2016 10:36
Вопросы из категории :
32x32