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

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

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

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

06.04.2015, 01:40. Просмотров 1186. Ответов 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, но как его правильно запилить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2015, 01:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отображение ListView во фрагменте (Программирование Android):

Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити - Программирование 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 ...

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

5
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
06.04.2015, 10:13 #2
Lina Efer, Вы хотите, чтобы ListView вызывался как фрагмент, а не элемент в активити, так?
0
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
06.04.2015, 10:32  [ТС] #3
Да, если я правильно поняла схему работы. Дело в том, что в активити есть два фрагмента(вкладки), в каждом из которых дб свой список. Я потом буду подключать БД.
0
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
06.04.2015, 10:40 #4
Lina Efer, А попробуйте сначала просто вывести в MainActivity один фрагмент, в котором содержится ListView, запонляемый массивом данных. Может так, начиная с малого,вы сможете лучше понять схему работы фрагментов.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
06.04.2015, 12:38 #5
У вас все наоборот, ActionBar, ViewPager должны быть в MainActivity.
Там же задаваться FragmentManager.
А в SecondFragment уже заполнять фрагменты.
Вот поизучайте
0
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
07.04.2015, 00:16  [ТС] #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;
    }
}

компилятор ошибок не видит, но все вылетает..
0
07.04.2015, 00:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2015, 00:16
Привет! Вот еще темы с ответами:

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Фрагмент во фрагменте - Программирование Android
Добрый день. А возможно ли создание фрагмента состоящего из нескольких фрагментов?

Webview на фрагменте - Программирование Android
Всем привет! Есть проблемка, может кто сталкивался... Есть фрагмент с webview. Меняю размер шрифта в webview, и меняется только размер на...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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