Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
#1

Отображение ListView во фрагменте - Программирование Android

06.04.2015, 01:40. Просмотров 1101. Ответов 5
Метки нет (Все метки)

Привет, всем!
Буду очень признательна, если кто-нибудь сможет мне помочь разобраться.
Я пишу программку для расписания занятий моего универа, параллельно учусь писать под андроид. Сейчас столкнулась с одним вопросом: как отобразить список во вкладках фрагмента? (пока тестирую на простом массиве значений, точнее собираю код по кусочкам из того, что нахожу).


Вот код фрагмента:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package com.example.linaefer.ttsuai;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.RelativeLayout;
import android.app.Activity;
import android.view.ViewGroup.LayoutParams;
 
 
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
 
public class SecondFragment extends SherlockFragment {
 
    private ActionBar     actionBar;
    private ViewPager     pager;
    private ActionBar.Tab tab;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
 
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
        View view = inflater.inflate(R.layout.fragment_second, container, false);
 
        actionBar = getSherlockActivity().getSupportActionBar();
        actionBar.removeAllTabs();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setTitle(getString(R.string.second_fragment_name));
        ViewPager.SimpleOnPageChangeListener ViewPagerListener = new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                actionBar.setSelectedNavigationItem(position);
            }
        };
 
        pager = (ViewPager) view.findViewById(R.id.pager_color);
        pager.setOnPageChangeListener(ViewPagerListener);
 
 
        FragmentManager fm = getChildFragmentManager();
 
        ActionBar.TabListener tabListener = new ActionBar.TabListener() {
 
            @Override
            public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                pager.setCurrentItem(tab.getPosition());
 
                SherlockFragmentActivity sherlockFragmentActivity = getSherlockActivity();
                if (sherlockFragmentActivity != null) {
                    SlidingMenu slidingMenu = ((MainActivity) sherlockFragmentActivity).getMenu();
                    if (tab.getPosition() == 0) {
                        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
                    } else {
                      slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                    }
                }
            }
 
            @Override
            public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
 
            }
 
            @Override
            public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { }
        };
 
        tab = actionBar.newTab().setText("ГРУППА").setTabListener(tabListener);
        actionBar.addTab(tab);
 
        tab = actionBar.newTab().setText("ПРЕПОДАВАТЕЛЬ").setTabListener(tabListener);
        actionBar.addTab(tab);
 
 
        return view;
    }
}
А вот этот код был адаптировать для mainactivity

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
 
public class MainActivity extends Activity {
    private final String[] values = { "Test 1", "Test 2", "Test 3", "Test 4", "Test 5", "Test 6", "Test 7", "Test 8",
            "Test 1", "Test 2", "Test 3", "Test 4", "Test 5", "Test 6", "Test 7", "Test 8", "Test 1", "Test 2",
            "Test 3", "Test 4", "Test 5", "Test 6", "Test 7", "Test 8", "Test 1", "Test 2", "Test 3", "Test 4",
            "Test 5", "Test 6", "Test 7", "Test 8" };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
 
        ListAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, values);
        listView.setAdapter(adapter);
        setContentView(listView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
 
}
я нашла то, что для фрагмента используется метод onCreateView, но как его правильно запилить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2015, 01:40     Отображение ListView во фрагменте
Посмотрите здесь:

Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити - Программирование Android
Создать активити с двумя фрагментами. В первый фрагмент должен содержать поле ввода, второй текстовое поле. Выводить во втором фрагменте...

отображение Listview - Программирование Android
Необходимо вывести строковый массив(listview_names) и осуществить поиск по его элементам... код получился следующий: public class...

Отображение записи ListView - Программирование Android
Делаю приложение для заметок. Заметки сохраняются в файле. Механизм открытия заметки для редактирования я представляю так: при клике на...

ListView изменить отображение строк - Программирование Android
Есть listView в него выводится массив String колличество символов в отлельных строках массива может быть значительным в listview они...

Неправильное отображение Listview создаваемого с SimpleAdapter - Программирование Android
Никак не получается сделать отображение таким как на картинке http://developer.alexanderklimov.ru/android/theory/simpleadapter1.png ...

Остановить выполнение во фрагменте - Программирование Android
Есть для примера код который расположен в фрагменте. как остановить программу // Если номер введен неверно ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
06.04.2015, 10:13     Отображение ListView во фрагменте #2
Lina Efer, Вы хотите, чтобы ListView вызывался как фрагмент, а не элемент в активити, так?
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
06.04.2015, 10:32  [ТС]     Отображение ListView во фрагменте #3
Да, если я правильно поняла схему работы. Дело в том, что в активити есть два фрагмента(вкладки), в каждом из которых дб свой список. Я потом буду подключать БД.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
06.04.2015, 10:40     Отображение ListView во фрагменте #4
Lina Efer, А попробуйте сначала просто вывести в MainActivity один фрагмент, в котором содержится ListView, запонляемый массивом данных. Может так, начиная с малого,вы сможете лучше понять схему работы фрагментов.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
06.04.2015, 12:38     Отображение ListView во фрагменте #5
У вас все наоборот, ActionBar, ViewPager должны быть в MainActivity.
Там же задаваться FragmentManager.
А в SecondFragment уже заполнять фрагменты.
Вот поизучайте
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2015, 00:16     Отображение ListView во фрагменте
Еще ссылки по теме:

Потоки в фрагменте не запустить? - Программирование Android
Не могу использовать потоки в фрагменте. использую конструкцию: new Thread() { @Override public void run() { ...code ...

MenuItemSelected не работает в фрагменте - Программирование Android
Метод return super.onMenuItemSelected(featureId, item); никак не хочет работать в фрагменте, почему? До работы приложения остаётся только...

Обработка физической кнопки в фрагменте - Программирование Android
День добрый! Столкнулся с такой проблемой. Есть фрагмент: package com.example.navigationsample; import java.io.IOException; ...

Изменить из активити данные в фрагменте - Программирование Android
Есть Activity с PagerAdapter, в который грузятся фрагменты. В классе фрагмента данные берутся из БД и грузятся в ListView через адаптер...

Обработать событие onBackPressed во фрагменте - Программирование Android
У меня есть фрагмент который запускается через транзакцию и как можно обработать в нем нажатие кнопки back и выполнить определенные...

Где в Фрагменте инициализировать доступ к базе? - Программирование Android
Где в Фрагменте инициализировать доступ к базе? пробую так в Create: dbOpenHelper = new DBHelperSqLite(getActivity()); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
07.04.2015, 00:16  [ТС]     Отображение ListView во фрагменте #6
Спасибо, но мне это не нужно в MainActivity.
Разобралась немного в необходимой структуре.
Теперь есть конкретный вопрос - как в switch case вывести два разных listview?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
 
public class ViewPagerListAdapter extends FragmentPagerAdapter {
 
    final int PAGE_COUNT = 2;
 
    public ViewPagerListAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }
 
    @Override
    public Fragment getItem(int arg0) {
        Fragment fragment = null;
 
        switch (arg0) {
            case 0:
                fragment = new FragmentListGroups(); 
                break;
            case 1:
                fragment = new FragmentListTeachers();
                break;
        }
 
        return fragment;
    }
 
    @Override
    public int getCount() {
        return PAGE_COUNT;
    }
}

в каждом кейсе должен быть свой список.
(они определены в файлах FragmentListGroups.java/FragmentListTeachers.java)


Java
1
2
3
4
5
6
7
8
9
10
  
public class FragmentListGroups extends SherlockFragment {
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View View = inflater.inflate(R.layout.list_groups, container, false);
        ListView list = (ListView) View.findViewById(R.id.list_groups);
        return View;
    }
}

компилятор ошибок не видит, но все вылетает..
Yandex
Объявления
07.04.2015, 00:16     Отображение ListView во фрагменте
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru