0

Здравствуйте!

У меня имеется:

MainActivity;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

viewPager = (ViewPager) findViewById(R.id.viewPager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    tabLayout.setupWithViewPager(viewPager);

}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

    adapter.addFragment(new Tab_Heads(), "ГЛАВЫ");
    adapter.addFragment(new Tab_Bookmarks(), "ЗАКЛАДКИ");

    viewPager.setAdapter(adapter);
}

Fragment ГЛАВЫ;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.tab_heads, container, false);

    listView = (ListView) view.findViewById(R.id.listView);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            getActivity(), R.array.Heads, R.layout.list_line_items);

    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {

        }
    });

    return view;

}

В R.array.Heads у меня более 100 айтемов, и я хочу реализовать добавление закладок. То есть либо вызовом контекстного меню, либо нажатием на кнопку, чтобы выбранный айтем добавлялся во фрагмент "ЗАКЛАДКИ", и чтобы таким образом можно было выбрать любой айтем и добавлять его в следующий таб "ЗАКЛАДКИ".

Также еще интересует;

  listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
           if (position == 0) Intent i = new Intent(getActivity, Head_1.class); 
 startActivity(i);
    }
});

Возможно ли этот интент реализовать иначе, так как у меня более 100 глав? Или мне нужно будет if (position == ?) и к каждой позиции прописывать интент, как приведено в коде?

Int404
  • 32
  • Сильно в код не вдавался, но, в данном случае, if можно заменить на switch-case. – s8am Aug 31 '16 at 16:34
  • Хранение массиве здесь носит скорее академический характер, так как при выходе из приложения все ваши закладки пропадут. Вам требуется хранить эту информацию в постоянной памяти, например БД. Смотрите, например этот ответ, как такое можно реализовать. Так же вам надо не создавать 100 активити под каждую главу, а только одну, в которую передавать через интент, какую главу отображать и менять только контент. – pavlofff Sep 01 '16 at 01:29
  • @pavlofff, правильно ли я понял теорию реализации, например у меня экран с этими же двумя табами, в обоих табах лист вью, я создаю БД, заполняю бд текстом, и потом отдельными строками заполняю лист вью в первом табе, и устанавливаю на каждом айтеме кнопку, по нажатию на которую, лист вью во втором табе по айди будет получать строку и отображать ее? – Int404 Sep 08 '16 at 19:56
  • @pavlofff И еще, как искать реализацию метода с интентом о котором вы говорите? Получается я все ID на текст вью получаю в одном активити, и через него прогоняю xml контенты? То есть у меня будет 100xml глав, и один активити который будет их обрабатывать? Просто отображаемое разнится в xml главах. – Int404 Sep 08 '16 at 20:00
  • нет, 100 xml не надо создавать. Есть две активити - одна со списком глав, вторая для вывода текста по главе, у которой в разметке есть TextView. В БД вы храните записи: id, глава, содержимое главы. При клике в списке вы получаете ID записи, передаете этот ID интентом во вторую активити. Во второй активити по полученному ID делаете выборку из БД о содержимом главы и устанавливаете полученный текст в TextView. Смотрите реализацию паттерна Master/Detail Flow. Если все еще не понятно, создайте новый вопрос по этой проблеме. – pavlofff Sep 09 '16 at 04:23
  • В книге Д.Гриффитс - "Head First. Программирование для Android" - 2016, в главе 12 подробно рассматривается пример со списками и закладками (фаворитами), а так же отобажение подробностей при клике в списке (с главы 5) применительно к БД SQLite. Думаю, будет полезно почитать (книги вообще полезней читать, чем статьи в интернете) и даже прочитать ее всю, 99% вопросов, которые у вас есть сейчас там решено, а ваша задача - полностью, с подробными пояснениями. – pavlofff Sep 09 '16 at 05:09
  • Ясность полная, пошел искать книгу) – Int404 Sep 09 '16 at 05:09
  • Далеко искать не надо, на 4pda вообще очень хорошая библиотека по Android (правда шапку не обновляли очень давно и книги приходится искать поиском по теме). С 5 главы прямо и начинается то, что вам нужно, но читать лучше с начала. – pavlofff Sep 09 '16 at 05:13
  • Да, пожалуй пройду всю книгу. Не знаю как тут голосовать, или на что тут заменено благодарствие? – Int404 Sep 09 '16 at 05:55

0 Answers0